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

làm thế nào để chọn các giá trị xuất hiện thường xuyên nhất?

select
  x.last_name,
  x.name_count
from
  (select
    u.last_name,
    count(*) as name_count,
    rank() over (order by count(*) desc) as rank
  from
    users u
  group by
    u.last_name) x
where
  x.rank = 1

Sử dụng chức năng phân tích rank . Nó sẽ chỉ định một số dựa trên thứ tự của count(*) desc . Nếu hai tên có cùng số lượng, chúng sẽ có cùng thứ hạng và số tiếp theo bị bỏ qua (vì vậy bạn có thể nhận được các hàng có xếp hạng 1, 1 và 3). dense_rank là một giải pháp thay thế không bỏ qua số tiếp theo nếu hai hàng có cùng thứ hạng, (vì vậy bạn sẽ nhận được 1, 1, 2), nhưng nếu bạn chỉ muốn các hàng có xếp hạng 1, không có nhiều sự khác biệt .

Nếu bạn chỉ muốn một hàng, bạn muốn mỗi hàng có một số khác nhau. Trong trường hợp đó, hãy sử dụng row_number . Ngoài sự khác biệt nhỏ nhưng quan trọng này, các chức năng này tương tự nhau và có thể được sử dụng theo cách giống nhau.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Có cách nào để nhóm kết nối JBoss kết nối lại với Oracle khi kết nối gặp sự cố không?

  2. Sự phụ thuộc của các biểu mẫu Oracle

  3. Có cách nào để sử dụng DBMS_Alert để thông báo cho ứng dụng Winform về sự thay đổi cơ sở dữ liệu không

  4. Sử dụng các giá trị tuần tự cho khóa chính trong truy vấn CHÈN

  5. Oracle MIN làm hàm phân tích - hành vi kỳ quặc với ORDER BY?