Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

TSQL:Не може да изпълни обобщена функция AVG на COUNT(*), за да намери най-натоварените часове от деня

Използване на вграден изглед:

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)

Използване на 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Грешка на SQL Server 110:Има по-малко колони в израза INSERT от стойностите, посочени в клаузата VALUES.

  2. C# Изключение при отдалечена връзка към екземпляр на SQL Server 2005

  3. Върнете 0, когато резултатът е празен

  4. Как да използвам каскадно изтриване със SQL Server?

  5. Тригер, който актуализира само вмъкнатия ред