2017-07-19 19 views
1

如何修改此查詢以返回給我,所有在一年的所有12個月中都工作過的用戶ID?如何選擇在一段時間內每月工作的用戶?

SELECT extract(month from Date_worked) as Month,user_id FROM Users WHERE 
Date_worked >= '01/JAN/16' and Date_worked < '01/JAN/17' 

這目前返回我是這樣的:

MONTH - USER_ID 
1  12 
2  12 
3  11 
3  12 
4  11 
4  12 
5  12 
6  12 
7  12 
8  12 
9  12 
10  12 
11  12 
12  12 
... 

在這種情況下,因爲它與所有12個月相關的查詢應該只返回USER_ID 12。

+0

改變你的問題更清晰 – sugansoft

回答

1
SELECT 
    user_id 
FROM Users 
WHERE Date_worked >= '01/JAN/16' AND Date_worked < '01/JAN/17' 
GROUP BY user_id 
HAVING COUNT(*) = 12 

如果用戶能有一個給定月份相關的多條記錄,然後使用以下HAVING條款計數明顯月:

HAVING COUNT(DISTINCT EXTRACT(month from Date_worked)) = 12 
+0

這工作完美。謝謝。 –

0
SELECT extract(month from Date_worked) as Month,user_id 
FROM Users GROUP BY user_id 
HAVING COUNT(DISTINCT extract(month from Date_worked)) = 12 

試試上面的查詢。

+0

我收到以下錯誤與此查詢:「不是一個GROUP BY表達式」 –

+0

@ Shayme27哪一個? –

相關問題