sql >> Databáze >  >> RDS >> Sqlserver

SQL Server:Počet záznamů (včetně nuly) v desetiminutových intervalech

-- Protože vaše ukázková data pokrývají 27 hodin:

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. SQL Server dotaz k nalezení všech aktuálních názvů databází

  2. Zabezpečení proti SQL Injection - PDO, mysqli

  3. Problém VB.NET s připojením k Oracle 11g

  4. Definovat názvy tabulek a sloupců jako argumenty ve funkci plpgsql?