select a.*, round((100 * avg_tip) / avg_bill, 2) as tip_pct from ( select case when bill between 0 and 19.99 then '0-19.99' when bill between 20 and 39.99 then '20-39.99' when bill between 40 and 59.99 then '40-59.99' when bill between 60 and 79.99 then '60-79.99' when bill between 80 and 99.99 then '80-99.99' when bill between 100 and 119.99 then '100-119.99' when bill between 120 and 139.99 then '120-139.99' when bill between 140 and 159.99 then '140-159.99' else '160+' end as bill_range, round(avg (bill), 2) as avg_bill, round(avg (tip), 2) as avg_tip, count(*) as num_samples from tips_data group by bill_range) a order by tip_pct desc;

select a.*, round((100 * avg_tip) / avg_bill, 2) as tip_pct from ( select case when bill between 0 and 19.99 then '0-19.99' when bill between 20 and 39.99 then '20-39.99' when bill between 40 and 59.99 then '40-59.99' when bill between 60 and 79.99 then '60-79.99' when bill between 80 and 99.99 then '80-99.99' when bill between 100 and 119.99 then '100-119.99' when bill between 120 and 139.99 then '120-139.99' when bill between 140 and 159.99 then '140-159.99' else '160+' end as bill_range, round(avg (bill), 2) as avg_bill, round(avg (tip), 2) as avg_tip, count(*) as num_samples from tips_data group by bill_range) a order by tip_pct desc;

select a.*, round((100 * avg_tip) / avg_bill, 2) as tip_pct from ( select case when bill between 0 and 19.99 then '0-19.99' when bill between 20 and 39.99 then '20-39.99' when bill between 40 and 59.99 then '40-59.99' when bill between 60 and 79.99 then '60-79.99' when bill between 80 and 99.99 then '80-99.99' when bill between 100 and 119.99 then '100-119.99' when bill between 120 and 139.99 then '120-139.99' when bill between 140 and 159.99 then '140-159.99' else '160+' end as bill_range, round(avg (bill), 2) as avg_bill, round(avg (tip), 2) as avg_tip, count(*) as num_samples from tips_data group by bill_range) a order by tip_pct desc;