-
Notifications
You must be signed in to change notification settings - Fork 0
/
11_CTES.sql
110 lines (103 loc) · 1.83 KB
/
11_CTES.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
-- Databricks notebook source
-- SUBQUERY NÃO RECOMENDADA
-- Lista de Vendedores que estão no Estado com mais clientes
SELECT
idVendedor, descUF
FROM
silver_olist.vendedor
WHERE
descUF = (
SELECT
descUF
FROM
silver_olist.cliente
GROUP BY
descUF
ORDER BY
COUNT(DISTINCT idClienteUnico) DESC
LIMIT
1
)
-- COMMAND ----------
-- SUBQUERY NÃO RECOMENDADA
-- Lista de Vendedores que estão nos 2 Estados com mais clientes
SELECT
idVendedor, descUF
FROM
silver_olist.vendedor
WHERE
descUF IN (
SELECT
descUF
FROM
silver_olist.cliente
GROUP BY
descUF
ORDER BY
COUNT(DISTINCT idClienteUnico) DESC
LIMIT
2
)
-- COMMAND ----------
-- DBTITLE 1,WITH
-- Lista de Vendedores que estão nos 2 Estados com mais clientes
WITH tb_estados AS (
SELECT
descUF
FROM
silver_olist.cliente
GROUP BY
descUF
ORDER BY
COUNT(DISTINCT idClienteUnico) DESC
LIMIT
2
), tb_vendedores AS (
SELECT
idVendedor,
descUF
FROM
silver_olist.vendedor
WHERE
descUF IN (
SELECT
descUF
FROM
tb_estados
)
)
SELECT * FROM tb_vendedores
-- COMMAND ----------
-- Nota média dos pedidos dos vendedores de cada estado
WITH tb_pedido_nota AS (
SELECT
T1.idVendedor,
T2.vlNota
FROM
silver_olist.item_pedido AS T1
LEFT JOIN silver_olist.avaliacao_pedido AS T2 ON T1.idPedido = T2.idPedido
),
tb_vendedor_avg AS (
SELECT
idVendedor,
AVG(vlNota) AS avgNotaVendedor
FROM
tb_pedido_nota
GROUP BY
idVendedor
),
tb_estado_vendedor AS (
SELECT
T1.*,
T2.descUF
FROM
tb_vendedor_avg AS T1
LEFT JOIN silver_olist.vendedor AS T2 ON T1.idVendedor = T2.idVendedor
)
SELECT
descUF,
AVG(avgNotaVendedor) AS avgNotaEstado
FROM
tb_estado_vendedor
GROUP BY descUF
ORDER BY avgNotaEstado DESC