gpt4 book ai didi

php - Mysql根据某列的SUM返回结果

转载 作者:太空宇宙 更新时间:2023-11-03 12:23:06 25 4
gpt4 key购买 nike

我有一个查询,我需要获取所有在给定月份花费少于一定金额的客户,并仅返回未达到配额的客户。

现在的查询如下。

SELECT cus.id, cus.email_address, COALESCE(SUM(credit_total),0) AS totalSpend
FROM customers AS cus
LEFT JOIN tasks_custs AS tsk ON tsk.user_id = cus.id
WHERE (
YEAR(date_ordered) = '2013'
AND MONTH(date_ordered) = '09'
AND paid = '1'
AND totalSpend < '300'
)

返回的错误是“where 子句”中的未知列“totalSpend”。

我想知道的是,我能否通过单个 sql 查询完成我想做的事情,还是我必须选择所有客户并使用 php 检查支出。

我希望 mysql 只返回我需要的结果。

最佳答案

使用聚合函数时,您需要使用 HAVING 关键字而不是 WHERE

SELECT cus.id, cus.email_address, COALESCE(SUM(credit_total),0) AS totalSpend
FROM customers AS cus
LEFT JOIN tasks_custs AS tsk ON tsk.user_id = cus.id
WHERE (
YEAR(date_ordered) = '2013'
AND MONTH(date_ordered) = '09'
AND paid = '1')
GROUP BY cus.id
HAVING SUM(credit_total) < 30

如果你有兴趣,这里是good explanation WHEREHAVING 的区别看这里。但是如果你想要一个快速的总结,用我的话来说,我会说是这样的:

  • WHERE 条件应用于指定条件的任何分组之前,并且不能应用于聚合函数
  • HAVING分组后 应用并且可以使用聚合函数来过滤结果集。

关于php - Mysql根据某列的SUM返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18856082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com