sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLは同じ列でペアの一般的な組み合わせを見つけます

    すべてのプラットフォームペアを見つけるには、参加する必要があると思います:

    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
    

    編集2

    上記のクエリを使用すると、一般的なシリーズ番号を見つけることができます。残っているのはパーセンテージを見つけることだけです:

    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. Ora-01427の単一行サブクエリがselectで複数の行を返す問題を修正するにはどうすればよいですか?

    2. ORA02063DG4ODBCエラーの調査

    3. データベース内のエントリを検索します(列名/テーブル名を指定せずに)

    4. MYSqlテーブルから重複データを見つけて削除するためのクエリ