它不承认“总和”。为什么呢?
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
答案 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
确保牢记加入以获得适当的结果。