# exercícios back-end 01/08
## sessão 01
### exercício 01
``` sql
select purpose, avg(end_date - start_date)
from uber_drives ud
group by purpose;
```
### exercício 02
``` sql
select purpose, avg(miles)
from uber_drives ud
group by purpose;
```
### exercício 03
``` sql
select category, count(*)
from uber_drives ud
group by category
order by count desc;
```
### exercício 04
``` sql
select distinct start
from uber_drives ud;
```
### exercício 05
``` sql
select distinct stop
from uber_drives ud;
```
### exercício 06
``` sql
select max(miles), min(miles)
from uber_drives ud;
```
## sessão 02
### exercício 7.A
``` sql
select distinct purpose
from uber_drives ud
```
### exercício 7.B
``` sql
select distinct purpose, count(*)
from uber_drives ud
group by purpose
```
### exercício 7.C
``` sql
select distinct purpose, count(*)
from uber_drives ud
group by purpose
order by count desc
```
### exercício 7.D
``` sql
select * from (
select distinct purpose, count(*)
from uber_drives ud
group by purpose
order by count desc
) as dados
where dados.count between 100 and 170;
```
### exercício 7.E
``` sql
select *
from uber_drives ud
where purpose in (select purpose from (select * from (
select distinct purpose, count(*)
from uber_drives ud
group by purpose
order by count desc
) as dados
where dados.count between 100 and 170) as purposes)
```
### exercício 7.F
``` sql
select count(*) from (select *
from uber_drives ud
where purpose in (select purpose from (select * from (
select distinct purpose, count(*)
from uber_drives ud
group by purpose
order by count desc
) as dados
where dados.count between 100 and 170) as purposes)) as viagens
where miles between 5 and 10
```
### exercício 7.G
``` sql
select * from (select *
from uber_drives ud
where purpose in (select purpose from (select * from (
select distinct purpose, count(*)
from uber_drives ud
group by purpose
order by count desc
) as dados
where dados.count between 100 and 170) as purposes)) as viagens
where miles between 5 and 10
and date_part('hour', end_date - start_date ) <= 1;
```
### exercício 7.H
Como a questão G estava com problemas, fiz as demais sem a condição acrescentada por ela.
``` sql
select * from (select *
from uber_drives ud
where purpose in (select purpose from (select * from (
select distinct purpose, count(*)
from uber_drives ud
group by purpose
order by count desc
) as dados
where dados.count between 100 and 170) as purposes)) as viagens
where miles between 5 and 10
and stop <> 'Unknown Location'
and start <> stop;
```
### exercício 7.I
``` sql
select * from (select *
from uber_drives ud
where purpose in (select purpose from (select * from (
select distinct purpose, count(*)
from uber_drives ud
group by purpose
order by count desc
) as dados
where dados.count between 100 and 170) as purposes)) as viagens
where miles between 5 and 10
and stop <> 'Unknown Location'
and start <> stop
and start_date between '2016-04-01%' and '2016-04-15';
```
### exercício 7.J
``` sql
select * from (select *
from uber_drives ud
where purpose in (select purpose from (select * from (
select distinct purpose, count(*)
from uber_drives ud
group by purpose
order by count desc
) as dados
where dados.count between 100 and 170) as purposes)) as viagens
where miles between 5 and 10
and stop <> 'Unknown Location'
and start <> stop
and start_date between '2016-04-01%' and '2016-04-15'
order by miles desc
limit 1
```