GROUP BY和COUNT或SUM如何在SQL查询中协同工作

时间:2016-02-05 17:44:57

标签: mysql sql

我想知道GROUP BYCOUNTSUM在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
;

如何执行?该表达式的哪一部分先前执行过?

1 个答案:

答案 0 :(得分:2)

sumcount这样的聚合函数返回基于一组行的结果(由group by子句中指定的列聚合)然后在你的情况下获得两者:包含的值的总和在具有相同product_name的行和这些行的计数中。

按条件分组引导聚合并以相同的方式为所有聚合功能工作..