2011-11-30 67 views
0

我有這樣多個重複找到

ticket_id destination 
--------- ----------- 
5   Paris 
5   Paris 
5   California 
5   Paris 
6   Nebraska 
15   London 
6   Nebraska 
6   Nebraska 

一個表,我想選擇所有的票ID的表中有超過2倍,並以相同的目的地。

所以,在這種情況下,我會獲得一個表,如:

ticket_id destination num_times 
--------- ----------- --------- 
5   Paris  3 
6   Nebraska 3 

我知道如何獲得重複,所有門票某些時間:

SELECT ticket_id, destination, 
COUNT(ticket_id) AS num_times 
FROM table 
GROUP BY ticket_id 
HAVING (COUNT(*) > 2) 

但是我不知道怎麼樣我可以添加目的地相似度。

回答

4

只需按兩票ID和目的地:

SELECT ticket_id, destination, 
COUNT(ticket_id) AS num_times 
FROM table 
GROUP BY ticket_id, destination 
HAVING (COUNT(*) > 2) 
1

順便說一句,您的查詢並不需要是這麼大。這裏是一個可行的簡短版本:

SELECT ticket_id, destination, COUNT(*) AS num_times 
FROM table 
GROUP BY 1, 2 
HAVING COUNT(*) > 2 

口頭禪:LESS == GOOD

+0

口頭禪:儘量避免位置字段引用和使用明確的字段名稱,而不是;-) – zerkms

+0

@zerkms我已經做了20年以上,並使用位置引用*從來沒有*造成問題。主要是閱讀起來更容易(特別是大量的非聚合列),並且不必重複計算(如果計算了非聚合列) – Bohemian