我正在尝试从我的表中名为clientstate和clientrevenue的两列中提取信息。我希望clientstate显示为状态,并且只有不同的名称,并且在客户收入下我想要每个州的平均收入,并且只有在该州至少有两个客户端时才会显示。我对此非常陌生,所以我所拥有的是非常好的:
SELECT clientstate, clientrevenue
FROM client
GROUP BY clientrevenue
HAVING COUNT (*) >=2;
我在哪里错了?
答案 0 :(得分:0)
SELECT clientstate AS [State]
, AVG(clientrevenue) AS [Average Revenue]
FROM client
GROUP BY clientstate
答案 1 :(得分:0)
ClientRevenue的分组将尝试对类似的值进行分组,并且没有逻辑意义。
首先,为了获得不同的状态,需要在GROUP BY语句中使用clientstate列。
因此,代码将是:
SELECT clientstate, AVG(clientrevenue)
FROM Source_Table
GROUP BY clientstate --this would get you distinct states
现在,考虑到每个州的2个客户,它是一个条件,而不是HAVING语句。 HAVING语句根据您使用的聚合函数限制查询结果。例如,在上述代码中,聚合函数是AVG(clientrevenue)。所以,我们只能在HAVING中使用它。我们不能添加count(*),除非它在SELECT中使用。
因此,您需要将其添加为
之类的条件SELECT clientstate, AVG(clientrevenue)
FROM Source_Table A
WHERE (SELECT count(DISTINCT client_ID) FROM Source_Table B
WHERE A.clientstate = B.clientstate) >= 2 --Condition
GROUP BY clientstate --this would get you distinct states