SQL - Encontrar máximo valor por cada día de la semana de cada estación

 
Vista:

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.

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder