sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL vindt gemeenschappelijke combinatie van paren in dezelfde kolom

Ik denk dat je een join nodig hebt om alle platformparen te vinden:

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

BEWERK 2

Met behulp van de bovenstaande zoekopdracht kunt u het algemene serienummer vinden. Het enige wat overblijft is het vinden van het percentage:

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. Converteer een Unix-tijdstempel naar een datumwaarde in Oracle

  2. Laravel:SQLSTATE [HY000] [2054] De door de server gevraagde authenticatiemethode onbekend bij de client

  3. Voeg bedragen toe uit twee verschillende tabellen Oracle

  4. Fout bij gebruik van oracle.dataaccess.dll