Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Sử dụng truy vấn phụ trong SQL để tìm max (count ())

Bạn không cần một truy vấn con tương quan cho những gì bạn đang làm. Đây là một cách dựa trên truy vấn của bạn:

select CustomerNum, count(CustomerNum)
from Rentals R
group by CustomerNum
having count(CustomerNum) = (select max(cnt)
                             from (select CustomerNum, count(CustomerNum) as cnt
                                   from Rentals
                                   group by CustomerNum
                                  ) rc
                            );

Tôi có xu hướng chuyển truy vấn con đến from mệnh đề và sử dụng truy vấn con:

select rc.*
from (select CustomerNum, count(CustomerNum) as cnt
      from Rentals R
      group by CustomerNum
     ) rc join
     (select max(cnt) as maxcnt
      from (select CustomerNum, count(CustomerNum) as cnt
            from Rentals
            group by CustomerNum
           ) rc
     ) m
     on rc.cnt = m.maxcnt;

Đây là SQL tiêu chuẩn và sẽ hoạt động trong cả hai hệ thống. Trong thực tế, tôi có thể tìm cách sử dụng top hoặc row_number() trên SQL Server 2008.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thay thế một chuỗi bằng một chuỗi khác trong SQL Server (T-SQL)

  2. LINQ to SQL mỗi hàng thứ N từ bảng

  3. Cách dễ dàng xây dựng lại cơ sở dữ liệu tổng thể trong SQL Server

  4. Thuật toán để tránh SQL injection trên MSSQL Server từ mã C #?

  5. Có thể sử dụng SqlGeography với Linq to Sql không?