Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Serwer Sql:zliczanie rekordów (łącznie z zerem) w odstępach dziesięciominutowych

-- Ponieważ Twoje przykładowe dane obejmują 27 godzin:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego SET XACT_ABORT ON nie jest zachowaniem domyślnym?

  2. SQL Server konwertuje ciąg na datę i godzinę

  3. Przygotowane parametry Instrukcja LIKE Nie działa z SQLSRV

  4. Tryb poleceń SQL SQL SERVER - nie można wydrukować

  5. freeTDS nie używa swojej konfiguracji