sql >> Database >  >> RDS >> Sqlserver

Sql Server:tel records (inclusief nul) per tien minuten interval

-- Omdat uw voorbeeldgegevens 27 uur beslaan:

DECLARE
    @hours TINYINT,
    @minute_interval TINYINT,
    @start SMALLDATETIME;

SELECT
    @hours = 27,
    @minute_interval = 10,
    @start = '20100122 13:00';

;WITH x AS 
(
    SELECT TOP (@hours * (60 / @minute_interval))
        n = ROW_NUMBER() OVER
        (ORDER BY column_id)
    FROM msdb.sys.columns
),
intervals(boundary) AS
(
    SELECT CONVERT
    (
      SMALLDATETIME,
      DATEADD(MINUTE, (-n * @minute_interval), @start)
    )
    FROM x
)
SELECT
    i.boundary,
    RequestCount = COUNT(d.id),
    DistinctPopIDs = COUNT(DISTINCT d.popid)
FROM
    intervals AS i
LEFT OUTER JOIN
    dbo.Track_PageSubmit AS d
    ON d.requestBegin >= i.boundary
    AND d.requestBegin < DATEADD(MINUTE, @minute_interval, i.boundary)
GROUP BY i.boundary
ORDER BY i.boundary;


  1. Voorwaardelijk OP DUPLICATE KEY UPDATE (alleen bijwerken als aan bepaalde voorwaarde wordt voldaan)

  2. PostgreSQL schalen voor grote hoeveelheden gegevens

  3. Oracle, maak datum tijd de eerste dag van de maand

  4. Algemene fout:1366 Onjuiste integerwaarde met Doctrine 2.1 en Zend Form-update