0

わかりました、これが取引です。さまざまなタイプがある統計のテーブルがあり、一致するデータ(ハッシュ)があり、別のデータに基づいて一意である前の(直接前ではない)行がある場合にのみ行を選択したい列の値。

次の例では、SALE 行のみを取得する必要があります

この例は役立つはずです:

id    link_id   member_id   stat_type   hash
----------------------------------------------
108   41        82          SALE        fffff
107   41        82          CLICK       fffff
106   41        82          CLICK       eeeee
105   41        67          SALE        ddddd
104   41        67          CLICK       ddddd
103   41        35          SALE        ccccc
102   41        35          CLICK       bbbbb
101   41        35          CLICK       aaaaa

ここで取得したい唯一の行は member_id = 67 です。これは、そのメンバーの link_id 41 への唯一の前の CLICK が同じハッシュを持っているためです。メンバー 82 と 35 はどちらも、一致しないハッシュを持つ link_id 41 への以前のクリックがあるため、選択されません。

クエリ結果は次のようになります。

id    link_id   member_id   stat_type   hash
----------------------------------------------
105   41        67          SALE        ddddd

ティア

4

2 に答える 2

1

問題を正しく理解した場合は、最初にlink_idとでテーブルをグループ化しmember_id、それらのグループを 1 つのみ異なる を含むグループにフィルターしhash、結果をテーブルに結合して、一致するすべてのSALEレコードを取得する必要があります。

SELECT * FROM my_table NATURAL JOIN (
  SELECT   link_id, member_id
  FROM     my_table
  GROUP BY link_id, member_id
  HAVING   COUNT(DISTINCT hash) = 1
) t WHERE stat_type = 'SALE'

sqlfiddleで参照してください。

于 2013-10-29T20:38:41.200 に答える