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

PostgreSQL tìm kết hợp phổ biến của các cặp trên cùng một cột

Tôi đoán bạn cần tham gia để tìm tất cả các cặp nền tảng:

select 
  sp1.platform as platform1, sp2.platform as platform2, count(*) as numcommon 
from 
  seriesonplatform AS sp1
  JOIN seriesonplatform AS sp2 ON (sp1.seriesid = sp2.seriesid) AND (sp1.platform <>  sp2.platform)
where 
  sp1.platform in ('BET','BET+')
  AND sp2.platform in ('BET','BET+')
group by
  sp1.platform,
  sp2.platform

CHỈNH SỬA 2

Sử dụng truy vấn ở trên, bạn có thể tìm thấy số sê-ri phổ biến. Tất cả việc còn lại là tìm tỷ lệ phần trăm:

SELECT 
  platform1.platform, common.platform2, numcommon * 1.0 / platform1.seriescount AS show_on_platform2
FROM (
  SELECT 
    platform, count(*) AS seriescount
  FROM 
    seriesonplatform
  GROUP BY
    platform 
) platform1
LEFT JOIN (
  SELECT 
    sp1.platform as platform1, sp2.platform as platform2, count(*) as numcommon 
  FROM 
    seriesonplatform AS sp1
    JOIN seriesonplatform AS sp2 ON (sp1.seriesid = sp2.seriesid) AND (sp1.platform <>  sp2.platform)
  GROUP BY
    sp1.platform,
    sp2.platform
) AS common ON platform1.platform = common.platform1
WHERE 
  numcommon * 1.0 / platform1.seriescount > 0.5
ORDER BY
  platform1.platform, platform2



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuẩn hóa Unicode trong PostgreSQL 13

  2. 5 cách để kiểm tra xem một bảng có tồn tại trong PostgreSQL hay không

  3. Lỗi drop Rails + Postgres:cơ sở dữ liệu đang được người dùng khác truy cập

  4. Lỗi liên kết với libpq bằng C ++

  5. PostgreSQL:THAY ĐỔI GIỮA INTERVAL '10 NGÀY' VÀ ROW HIỆN TẠI