sql >> Databasteknik >  >> RDS >> Sqlserver

Hur får man postgrupperingsdatum för en period på 3 dagar i SQL?

Här är mitt förslag till lösning:

DECLARE @MinDate AS DATETIME = (SELECT MIN(flight_date) FROM flights);

WITH cte
AS
(
    SELECT
        flight_date, DATEDIFF(DAY, @MinDate, flight_date) AS NoDays,
        DATEDIFF(DAY, @MinDate, flight_date)/5 AS NoGroup,
        DPT
    FROM flights
)
SELECT  
    DATEADD(DAY, NoGroup*5, @MinDate) AS [Week Start],
    DATEADD(DAY, NoGroup*5+4, @MinDate) AS [Weed End],  
    SUM(DPT)
FROM cte
GROUP BY NoGroup;

Tanken är att bilda grupper om 5 dagar och sedan associera en post till en specifik grupp baserat på division med 5. NoDays representerar de dagar som spenderats från MinDate till Flight_Date.



  1. Mysql Lagring av en variabel med resultatet av ett SELECT CASE

  2. MySQL PHP PDO förberedda uttalanden - prestandaproblem kontra säkerhet

  3. Varför är frågeparametrarna för många webbplatser (MySQL) mycket kryptiska långa heltal?

  4. Hämta antal uppdaterade rader