Repository navigation
Expand file tree
/
Copy pathClase 4. Repaso SQL_Youtube.sql
More file actions
159 lines (130 loc) · 5.05 KB
/
Copy pathClase 4. Repaso SQL_Youtube.sql
File metadata and controls
159 lines (130 loc) · 5.05 KB
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
/*Ejercicio 1
Escriba una consulta que seleccione el ID y el nombre del cliente de la tabla Customer,
mostrando solo los resultados de los clientes que no están desempleados. Recuerde escribir
su consulta como una cadena de varias líneas (encerrada entre un par de comillas triples """)
y pasarla a la función runQuery()definida en el marco anterior para verificar su trabajo.*/
SELECT CustomerID, Name ,Occupation
FROM customers c
WHERE Occupation != 'Unemployed'
/* ----------------------- */
-- Aliasing
SELECT CustomerID, Name AS CustomerName
FROM customers c
WHERE Occupation != 'Unemployed'
ORDER BY CustomerName ASC
/* ----------------------- */
/*Ejercicio 2
Escriba una consulta que produzca una lista, en orden alfabético, de todas las distintas
ocupaciones en la tabla Customer que contengan la palabra" Ingeniero "*/
SELECT DISTINCT Occupation
FROM customers c
WHERE Occupation LIKE '%Engineer%'
ORDER BY Occupation DESC
/* ----------------------- */
/*Ejercicio 3
Escriba una consulta que devuelva el ID del cliente, su nombre y una columna Over30 que
contenga" Sí "si el cliente tiene más de 30 años y" No "si no.
*/
SELECT CustomerID, Name,
CASE
WHEN Age >= 30 THEN 'Yes'
WHEN Age < 30 THEN 'No'
ELSE 'Missing Data'
END AS Over30
FROM customers c
ORDER BY Name DESC
-- Modifiquemos ahora el ejercicio 3 para que la consulta solo devuelva clientes que trabajan en
-- una profesión de ingeniería:
/* ----------------------- */
SELECT CustomerID, Name,
CASE
WHEN Age >= 30 THEN 'Yes'
WHEN Age < 30 THEN 'No'
ELSE 'Missing Data'
END AS Over30
FROM Customer
WHERE Occupation LIKE '%Engineer%'
ORDER BY Name DESC
-- JOINS
/* ----------------------- */
SELECT CallID, a.AgentID, name
FROM calls c
JOIN agents a ON c.AgentID = a.AgentID
ORDER BY Name DESC
/* ----------------------- */
/* Ejercicio 4
Escriba una consulta que devuelva todas las llamadas realizadas a clientes de la profesión de
ingeniería y muestre si son mayores o menores de 30, así como si terminaron comprando el
producto de esa llamada
*/
SELECT CallID, c.CustomerID, Name, ProductSold,
CASE
WHEN Age >= 30 THEN 'Yes'
WHEN Age < 30 THEN 'No'
ELSE 'Missing Data'
END AS Over30
FROM customers c
JOIN calls ca ON ca.CustomerID = c.CustomerID
WHERE Occupation LIKE '%Engineer%'
ORDER BY Name DESC
/* ----------------------- */
/*Ejercicio 5
Escriba dos consultas: una que calcule las ventas totales y las llamadas totales realizadas a los
clientes de la profesión de ingeniería y otra que calcule las mismas métricas para toda la base de
clientes. ¿Qué puede concluir con respecto a la tasa de conversión entre los clientes de ingeniería
frente a la base de clientes en general?
*/
SELECT SUM(ProductSold) Ventas, COUNT(*) Conteo
FROM Customer Cu
JOIN Call Ca ON Ca.CustomerID = Cu.CustomerID
WHERE Occupation LIKE '%Engineer%'
-- Otras condiciones
/* ----------------------- */
SELECT SUM(ProductSold) Ventas, COUNT(*) Conteo
FROM customers c
JOIN calls ca ON ca.CustomerID = c.CustomerID
WHERE Occupation NOT LIKE '%Engineer%'
-- Que pasa con esto ahora?
/* ----------------------- */
SELECT SUM(ProductSold) Ventas, COUNT(*) Conteo
FROM customers c
JOIN calls ca ON ca.CustomerID = c.CustomerID
-- WHERE Occupation LIKE '%Engineer%'
/* ----------------------- */
/*Ejercicio 6
Escriba una consulta que calcule las ventas totales y las llamadas totales realizadas a
clientes mayores de 30 años. ¿Existe una diferencia notable entre la tasa de conversión
aquí y la de la base de clientes en general?
*/
SELECT SUM(ProductSold) AS TotalSales, COUNT(*) AS NCalls
FROM customers c
JOIN calls c2 ON c2.CustomerID = c.CustomerID
WHERE Age >= 30
/* ----------------------- */
/*Ejercicio 7
¿Qué tal si observa la tasa de conversión de ventas para ingenieros mayores de 30 años?
*/
SELECT SUM(ProductSold) AS TotalSales, COUNT(*) AS NCalls
FROM customers c2
JOIN calls c ON c.CustomerID = c2.CustomerID
WHERE (Occupation LIKE '%Engineer%') AND (Age >= 30)
/* ----------------------- */
SELECT SUM(ProductSold) AS TotalSales, COUNT(*) AS NCalls
FROM Customer Cu
JOIN Call Ca ON Ca.CustomerID = Cu.CustomerID
WHERE (Occupation LIKE '%Engineer%') AND (Age < 30)
/* ----------------------- */
/*Ejercicio 8
Escriba una consulta que devuelva, para cada agente, el nombre del agente, la cantidad de llamadas,
las llamadas más largas y más cortas, la duración promedio de las llamadas y la cantidad total de
productos vendidos. Nombra las columnas AgentName, NCalls, Shortest, Longest, AvgDuration y TotalSales
y ordena la tabla por AgentName en orden alfabético. (Asegúrese de incluir la cláusula WHERE PickedUp = 1
para calcular solo el promedio de todas las llamadas que fueron atendidas (de lo contrario, ¡todas las
duraciones mínimas serán 0)!)
*/
SELECT Name AS AgentName, COUNT(*) AS NCalls, MIN(Duration) AS Shortest, MAX(Duration) AS Longest, AVG(Duration) AS AvgDuration, SUM(ProductSold) AS TotalSales
FROM Call C
JOIN Agent A ON C.AgentID = A.AgentID
WHERE PickeDup = 1
GROUP BY Name
ORDER BY Name ASC