2016-07-11 48 views
0

我有一組數據,其中包含一組名稱,發佈者和日期。SQLite如何篩選具有不同標準的GROUPE

我想查找名稱存在於同一日期但沒有重複發佈者的情況。

我能找到在同一天與此查詢存在名稱:

SELECT * FROM list GROUP BY date HAVING COUNT(*) >= 2 

但是,我不知道如何證明有一個分組日期內的唯一發布的名字。

想到什麼是使用子查詢,如:

SELECT * FROM list WHERE datething IN (
    SELECT datething FROM list GROUP BY date HAVING COUNT(*) >= 2) 
GROUP BY publisher HAVING COUNT(*) == 1 

但是這具有消除所有的出版商,即使他們只有一天一個條目的效果。

例如..

Name | pub  | datething 
Arr | Yoda  | 2016-07-09 
Foo | Akbar  | 2016-07-10 
Bar | Akbar  | 2016-07-10 
Baz | Leia  | 2016-07-10 
Far | Luke  | 2016-07-10 
Bar2 | Akbar  | 2016-07-11 
Baz2 | Leia  | 2016-07-11 
Foo2 | Leia  | 2016-07-11 
Far2 | Luke  | 2016-07-11 

對於2016年7月10日,我希望看到巴茲和遠東,becasue Foo和Bar是由同一出版商。

對於2016-07-11,我希望看到Bar2和Far2。

我不希望在2016-07-09看到任何東西,因爲那裏只有一個條目。

但是,由於外部的GROUP BY子句,我得到0個結果 - 有超過1個發佈者。

任何幫助表示讚賞。

謝謝!

回答

2

您需要按日期和發佈者進行分組,才能使第二個過濾器正常工作。

SELECT * 
    FROM list 
WHERE datething IN (
      SELECT datething 
      FROM list 
      GROUP BY datething 
      HAVING COUNT(*) > 2 
     ) 
GROUP BY datething, 
      pub 
HAVING COUNT(*) == 1; 
相關問題