Encontrar máximo valor por cada día de la semana de cada estación
Publicado por Brahan V. (1 intervención) el 15/03/2021 16:37:35
Hola a todos, tengo una duda y les agradecería si me pueden ayudar, tengo esta sentencia y el resultado es:
start_station_name, day_of_week, peakhour, quantity max, el problema es que en day_of_week se repite 3 veces cada día de la semana y solo quiero que resulte el valor máximo en quantity_max para ese día, es decir, para la estación A, el día lunes, su peakhour, se encuentre sólo la cantidad máxima, y así sucesivamente hasta el domingo y que se repita con la estación B luego C, etc.
start_station_name, day_of_week, peakhour, quantity max, el problema es que en day_of_week se repite 3 veces cada día de la semana y solo quiero que resulte el valor máximo en quantity_max para ese día, es decir, para la estación A, el día lunes, su peakhour, se encuentre sólo la cantidad máxima, y así sucesivamente hasta el domingo y que se repita con la estación B luego C, etc.
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
SELECT start_station_name, day_of_week, Peakhour, MAX(Quantity) AS Quantity_Max
FROM
(
SELECT start_station_name,
CASE
WHEN EXTRACT(DAYOFWEEK FROM start_date) = 1 THEN 'Sunday'
WHEN EXTRACT(DAYOFWEEK FROM start_date) = 2 THEN 'Monday'
WHEN EXTRACT(DAYOFWEEK FROM start_date) = 3 THEN 'Tuesday'
WHEN EXTRACT(DAYOFWEEK FROM start_date) = 4 THEN 'Wednesday'
WHEN EXTRACT(DAYOFWEEK FROM start_date) = 5 THEN 'Thursday'
WHEN EXTRACT(DAYOFWEEK FROM start_date) = 6 THEN 'Friday'
WHEN EXTRACT(DAYOFWEEK FROM start_date) = 7 THEN 'Saturday'
END AS day_of_week,
CASE
WHEN cast(datetime(start_date) AS time) between CAST('03:00:00' AS time) and CAST('11:59:59' AS time) THEN 'Morning 03:00-11:59'
WHEN cast(datetime(start_date) AS time) between CAST('12:00:00' AS time) and CAST('18:59:59' AS time) THEN 'Afternoon 12:00-18:59'
WHEN cast(datetime(start_date) AS time) between CAST('19:00:00' AS time) and CAST('23:59:59' AS time) THEN 'Evening 19:00-02:59'
WHEN cast(datetime(start_date) AS time) between CAST('00:00:00' AS time) and CAST('02:59:59' AS time) THEN 'Evening 19:00-02:59'
END AS Peakhour,
COUNT(*) AS Quantity
FROM bigquery-public-data.london_bicycles.cycle_hire as d
GROUP BY start_station_name, day_of_week, Peakhour)
GROUP BY start_station_name, day_of_week, Peakhour
ORDER BY start_station_name, day_of_week
Valora esta pregunta


0