# Exercícios Back-End 01/08/2020 ```sql select purpose, avg(date.end - date.start) from ( select purpose, end_date as end, start_date as start from uber_drives ) as date group by purpose; ``` ------ ```sql select purpose, avg(miles) from uber_drives group by purpose; ``` ------ ```sql select category, count(*) from uber_drives group by category order by count(*) desc; ``` ------ ```sql select distinct start from uber_drives limit 5; ``` ----- ```sql select distinct stop from uber_drives limit 5; ``` ------ ```sql select max(miles) as max, min(miles) as min from uber_drives ``` ------ ```sql select distinct purpose from uber_drives; ``` ----- ```sql select purpose, count(*) from uber_drives group by purpose; ``` -------- ```sql select purpose, count(*) from uber_drives where purpose is not null group by purpose order by count(*) desc; ``` ----------- ```sql select * from ( select purpose, count(*) from uber_drives where purpose is not null group by purpose order by count(*) desc ) as purpose where count between 100 and 170 ``` ----------- ```sql select * from uber_drives where purpose in (select purpose from ( select purpose, count(*) from uber_drives where purpose is not null group by purpose order by count(*) desc ) as purpose where count between 100 and 170) limit 5; ``` --------------- ```sql select count(purpose) from uber_drives where purpose in ( select purpose from ( select purpose, count(*) from uber_drives where purpose is not null group by purpose order by count(*) desc ) as purpose where count between 100 and 170 ) and miles between 5 and 10 ``` -------------- ```sql select * from uber_drives where purpose in ( select purpose from ( select purpose, count(*) from uber_drives where purpose is not null group by purpose order by count(*) desc ) as purpose where count between 100 and 170 ) and miles between 5 and 10 and (date_part('hour', end_date) - date_part('hour', start_date)) <= 1 order by start_date limit 5; ``` ------- ```sql select * from uber_drives where purpose in ( select purpose from ( select purpose, count(*) from uber_drives where purpose is not null group by purpose order by count(*) desc ) as purpose where count between 100 and 170 ) and miles between 5 and 10 and (date_part('hour', end_date) - date_part('hour', start_date)) <= 1 and start <> 'Unknown Location' and stop <> 'Unknown Location' and start = stop order by start_date ``` -------- ```sql select * from uber_drives where purpose in ( select purpose from ( select purpose, count(*) from uber_drives where purpose is not null group by purpose order by count(*) desc ) as purpose where count between 100 and 170 ) and miles between 5 and 10 and (date_part('hour', end_date) - date_part('hour', start_date)) <= 1 and start <> stop and stop <> 'Unknown Location' and start <> 'Unknown Location' and start_date between '2016-03-01' and '2016-03-15' ``` -------- ```sql select * from uber_drives where purpose in ( select purpose from ( select purpose, count(*) from uber_drives where purpose is not null group by purpose order by count(*) desc ) as purpose where count between 100 and 170 ) and miles between 5 and 10 and (date_part('hour', end_date) - date_part('hour', start_date)) <= 1 and start <> stop and stop <> 'Unknown Location' and start <> 'Unknown Location' and start_date between '2016-03-01' and '2016-03-15' order by miles desc limit 1 ; ```