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

postgres:lấy n lần xuất hiện hàng đầu của một giá trị trong mỗi nhóm

Một cái gì đó như thế này:

select *
from (
    select userid, 
           letter, 
           dense_rank() over (partition by userid order by count(*) desc) as rnk
    from letters
    group by userid, letter
) t
where rnk <= 2
order by userid, rnk;

Lưu ý rằng tôi đã thay thế user với userid bởi vì sử dụng các từ dành riêng cho các cột là một thói quen xấu.

Đây là SQLFiddle: http://sqlfiddle.com/#!12/ec3ec/1



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. lưu trữ các chuỗi có độ dài tùy ý trong Postgresql

  2. Cài đặt PostgresSQL 9.5 không thành công:“khởi tạo cụm cơ sở dữ liệu không thành công” MAC os (big sur 11.4)

  3. PHP Postgres:Lấy ID Chèn Cuối cùng

  4. Truy vấn trả về số hàng chính xác

  5. Xóa chức năng với khung dữ liệu sql spark