2016-05-20 17 views
1

私は以下のようにテーブルを持って、SQL番号、要約クエリ

Product Promotion exists (Y/N) Week 
    A Y 1 
    B Y 1 
    C Y 1 
    A Y 2 
    B Y 2 
    C N 2 
    A Y 3 
    B Y 3 
    C Y 3 
    A Y 4 
    B Y 4 
    C N 4 

私はPromitionは、全テーブルの上に組み合わせ出力を存在見てみたいです。

A, B - 4 
B,C - 2 
A,C - 2 

のようなもの、これはわずか3つの製品について、簡単な見えているので..私は、レコードの数千で探していますし、発生の合計数は、いくつかの数よりも大きい場合、同じ組み合わせを探しています。上記の例を取っ​​た場合、その数が4の場合..その後、私の出力は

A,B - 4 

答えて

1

はこれを試してみてくださいする必要があります:

SELECT p1, p2, COUNT(*) AS cnt 
FROM (
    SELECT t1.Product AS p1, t2.Product AS p2 
    FROM mytable AS t1 
    JOIN mytable AS t2 
    ON t1.Week = t2.Week AND 
     t1.Product < t2.Product AND 
     t1.Exists = 'Y' AND t2.Exists = 'Y') AS t 
    GROUP BY p1, p2  
    ORDER BY cnt DESC 

が一定の値を超えた唯一のペアは、ちょうど上記をラップ取得するにはサブクエリを追加し、WHERE cnt >= someValueを追加します。

Demo here

+0

...またはHAVINGを使用してください。 – Strawberry