[英]SQL query not returning desired result in group by having clause
我有一張帶有member_information及其引薦代理的表格。 我想運行一個查詢,該查詢返回表中所有信息的信息(選擇*),其中代理出現3次以上。
我最初的查詢是:
SELECT agent FROM activity GROUP BY agent ASC HAVING COUNT(agent) > 3;
這將返回所需的業務代表ID,但不會返回“活動”中的其余數據。
我修改為:
SELECT * FROM activity GROUP BY agent ASC HAVING COUNT(agent) > 3
這僅針對所需的每個業務代表號返回結果之一,而不是所有具有匹配業務代表號的行。
我想念什么?
假設表結構如下:
id | agent | name | address
--------------------------------------------------------
1 | 1 | (name) | (an address)
2 | 1 | (name) | (an address)
3 | 2 | (name) | (an address)
4 | 3 | (name) | (an address)
5 | 3 | (name) | (an address)
6 | 3 | (name) | (an address)
7 | 1 | (name) | (an address)
8 | 2 | (name) | (an address)
9 | 4 | (name) | (an address)
查詢結果應返回:
id | agent | name | address
--------------------------------------------------------
1 | 1 | (name) | (an address)
2 | 1 | (name) | (an address)
4 | 3 | (name) | (an address)
5 | 3 | (name) | (an address)
6 | 3 | (name) | (an address)
7 | 1 | (name) | (an address)
采用:
SELECT x.*
FROM ACTIVITY x
JOIN (SELECT t.agent
FROM ACTIVITY t
GROUP BY t.agent
HAVING COUNT(t.agent) > 3) y ON y.agent = x.agent
分組時,組中的所有行都壓縮為一個。 根據您要執行的操作,您需要使用適當的組函數(SUM,GROUP_CONCAT等),或者可以執行我認為要使用子查詢執行的操作:
SELECT * FROM activity WHERE agent IN (select agent from activity group by agent asc having count(agent) > 3);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.