with
t as
(select session_id,
case when duration/60>=0 and duration/60<5 then '[0-5>'
when duration/60<10 then '[5-10>'
when duration/60<15 then '[10-15>'
else '15 or more' end as bin
from Sessions),
b as
(SELECT "[0-5>" as bin union
SELECT "[5-10>" union
SELECT "[10-15>" union
SELECT "15 or more" )
select b.bin, count(t.bin) total
from b left join t on b.bin=t.bin GROUP BY b.bin;
Table Schema
Create table If Not Exists Sessions (session_id int, duration int);
Truncate table Sessions;
insert into Sessions (session_id, duration) values ('1', '30');
insert into Sessions (session_id, duration) values ('2', '199');
insert into Sessions (session_id, duration) values ('3', '299');
insert into Sessions (session_id, duration) values ('4', '580');
insert into Sessions (session_id, duration) values ('5', '1000');