我想知道GROUP BY
和COUNT
或SUM
在SQL查询中如何协同工作。
例如,为什么以下代码在每个组中的行上成功使用SUM
函数,而不是组本身?
SELECT
product_name,
SUM(SUBSTRING_INDEX(company_name, '|', -1) LIKE '%live%' AS count_live,
SUM(SUBSTRING_INDEX(company_name, '|', -1) LIKE '%demo%' AS count_demo,
SUM(SUBSTRING_INDEX(company_name, '|', -1) NOT LIKE '%live%' AND SUBSTRING_INDEX(company_name, '|', -1) NOT LIKE '%demo%') AS count_other,
COUNT(*) AS total
FROM foo GROUP BY product_name ORDER BY total DESC
;
如何执行?该表达式的哪一部分先前执行过?
答案 0 :(得分:2)
像sum
或count
这样的聚合函数返回基于一组行的结果(由group by子句中指定的列聚合)然后在你的情况下获得两者:包含的值的总和在具有相同product_name的行和这些行的计数中。
按条件分组引导聚合并以相同的方式为所有聚合功能工作..