sql >> Databasteknik >  >> RDS >> Mysql

GROUP BY tidsstämpel var 15:e minut inklusive saknade poster

Om du verkligen vill göra det i mysql bör detta fungera till viss del – beroende på hur du vill organisera dina 15 minuters intervaller. Jag har gett utdata som time from | time to | number of reports eftersom jag tycker att det är meningslöst och till och med lite bedrägligt att mata ut en specifik tidsstämpel och associera en räkning av ett tidsintervall med den.

SELECT CONCAT (
        lpad(hours.a, 2, "0"),
        ":",
        lpad(minutes.a * 15, 2, "0"),
        ":00"
        ) AS 'from',
    CONCAT (
        lpad(hours.a, 2, "0"),
        ":",
        lpad((minutes.a * 15) + 14, 2, "0"),
        ":59"
        ) AS 'to',
    count(r.id)
FROM (
    SELECT 0 AS a

    UNION

    SELECT 1 AS a

    UNION

    SELECT 2 AS a

    UNION

    SELECT 3 AS a

    UNION

    SELECT 4 AS a

    UNION

    SELECT 5 AS a

    UNION

    SELECT 6 AS a

    UNION

    SELECT 7 AS a

    UNION

    SELECT 8 AS a

    UNION

    SELECT 9 AS a

    UNION

    SELECT 10 AS a

    UNION

    SELECT 11 AS a

    UNION

    SELECT 12 AS a

    UNION

    SELECT 13 AS a

    UNION

    SELECT 14 AS a

    UNION

    SELECT 15 AS a

    UNION

    SELECT 16 AS a

    UNION

    SELECT 17 AS a

    UNION

    SELECT 18 AS a

    UNION

    SELECT 19 AS a

    UNION

    SELECT 20 AS a

    UNION

    SELECT 21 AS a

    UNION

    SELECT 22 AS a

    UNION

    SELECT 23 AS a
    ) hours
INNER JOIN (
    SELECT 0 AS a

    UNION

    SELECT 1 AS a

    UNION

    SELECT 2 AS a

    UNION

    SELECT 3 AS a
    ) minutes
LEFT JOIN reports r ON hours.a = hour(r.t)
    AND minutes.a = floor(minute(r.t) / 15)
GROUP BY hours.a,
    minutes.a;



  1. Lagrade procedurer med MySQL Workbench

  2. Django self join , Hur man konverterar denna fråga till ORM-fråga

  3. MySQL Math - Är det möjligt att beräkna en korrelation i en fråga?

  4. PostgreSQL VALUES Kommando förklaras