它不承认“总和”。为什么?

时间:2014-03-03 10:01:03

标签: sql phpmyadmin

它不承认“总和”。为什么呢?

SELECT c.c_id, c.c_name, SUM( p.p_sum ) AS sum
FROM clients c, contracts_rent r, payments p
WHERE c.c_id = r.c_id
AND r.contract_id = p.contract_id and sum>1300
GROUP BY c.c_id 

3 个答案:

答案 0 :(得分:2)

聚合列通常不能在where子句中处理,因为该子句在聚合之前发生

您需要的是having子句,它在聚合后发生

比较类似:

select id, something, p_sum from tbl
where p_sum > 100

成:

select id, something, sum(p_sum) from tbl
group by something
having sum(p_sum) > 100

前者选择行中总和大于100的单个行。something上的后一组然后选择总和大于100的分组行。

答案 1 :(得分:0)

像...一样的东西。

SELECT c.c_id, c.c_name, SUM( p.p_sum ) AS sum
FROM clients c, contracts_rent r, payments p
WHERE c.c_id = r.c_id
AND r.contract_id = p.contract_id
GROUP BY c.c_id 
HAVING SUM( p.p_sum ) > 1300

如果要对聚合函数值进行过滤,请使用HAVING关键字

答案 2 :(得分:0)

SELECT c.c_id, c.c_name, SUM( p.p_sum ) AS sum
FROM clients c, contracts_rent r, payments p
WHERE c.c_id = r.c_id
AND r.contract_id = p.contract_id 
GROUP BY c.c_id 
HAVING SUM(p.p_sum) > 1300

确保牢记加入以获得适当的结果。