0
我正在尋找解決方案來從連接表中計算分組行。從連接表中計算分組行
表參與者
id | email | date
----+---------------------------+--------------
1 | [email protected] | 14/01/2015
2 | [email protected] | 14/01/2015
3 | [email protected] | 01/01/2015
4 | [email protected] | 20/01/2015
5 | [email protected] | 13/02/2015
6 | [email protected] | 15/01/2015
表數據
pid | fieldid | data
----+---------+--------------
1 | 1 | Dutch
1 | 2 | Cheese
2 | 1 | German
2 | 2 | Soup
3 | 1 | German
3 | 2 | Bread
4 | 1 | German
4 | 2 | Sausage
5 | 1 | Italian
5 | 2 | Meat balls
6 | 1 | Italian
6 | 2 | Pizza
我想看看如何往往是一個用戶(根據他們的電子郵件地址)參加。但是,下面的查詢返回doenst預期的結果:
SELECT
COUNT(*) AS participated,
p.email,
coalesce(MAX(case when fieldid = 1 then data end), 0) as "language"
FROM participants p
LEFT JOIN data d
ON d.pid = p.id
GROUP BY p.email
結果:
participated | email | language
-------------+---------------------------+------------
2 | [email protected] | Dutch
6 | [email protected] | German
4 | [email protected] | Italian
「計數」結果不是我所期望的。它似乎被算爲雙倍。這可能是因爲在參與者表中的每個記錄的數據表中有兩條記錄。
什麼是正確的查詢使用?
謝謝!這有效,但我不確定原因。你能說一點嗎? – Kaspar 2015-02-07 21:47:21
因爲你似乎想在'd.pid'中計算不同的值而不是非NULL值的數目。 – 2015-02-07 23:10:00