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

TSQL:Nelze provést agregační funkci AVG na COUNT(*) k nalezení nejrušnějších hodin dne

Použití vloženého zobrazení:

SELECT DATEPART(hh, x.visitdate),
       AVG(x.num)
  FROM (SELECT t.visitdate,
               COUNT(*) 'num'
          FROM CUSTOMERLOG t
         WHERE t.visitdate BETWEEN 'Jan 1 2009' AND 'Aug 1 2009'
      GROUP BY t.visitdate) x
GROUP BY DATEPART(hh, x.visitdate)

Použití ekvivalentu CTE (SQL Server 2005+):

WITH visits AS (
   SELECT t.visitdate,
          COUNT(*) 'num'
     FROM CUSTOMERLOG t
    WHERE t.visitdate BETWEEN 'Jan 1 2009' AND 'Aug 1 2009'
 GROUP BY t.visitdate)
   SELECT DATEPART(hh, x.visitdate),
         AVG(x.num)
    FROM visits x
GROUP BY DATEPART(hh, x.visitdate)


  1. ERROR 1067 (42000):Neplatná výchozí hodnota pro „created_at“

  2. Pochopení rozdílů mezi CUBE a ROLLUP

  3. Odkazuje na proměnné relace (\set var='value') z PL/PGSQL

  4. Oracle odečítá dny a minuty