Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

TSQL:Tidak dapat melakukan fungsi agregat AVG pada COUNT(*) untuk menemukan jam tersibuk dalam sehari

Menggunakan tampilan sebaris:

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)

Menggunakan setara 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. Apa tujuan menggunakan CommandType.Tabledirect

  2. SQL Server - menggunakan CASE dalam klausa WHERE

  3. pilih * ke dalam tabel Apakah ini berfungsi untuk memasukkan data ke dalam tabel yang ada?

  4. Bisakah saya memiliki parameter OUTPUT opsional dalam prosedur tersimpan?

  5. Perbedaan antara database dan skema