MySQL执行GROUP BY子句后如何获取count统计列的最大值
方案1:仅获取最大值数值
将你现有GROUP BY的查询作为子查询,外层套MAX函数即可:
SELECT MAX(`count`) AS max_customer_count FROM ( SELECT COUNT(*) AS `count`, store_id FROM sakila.customer GROUP BY store_id ) AS store_stat;
执行后会直接返回count列的最大值326。
方案2:同时获取最大值和对应的store_id
如果需要拿到最大值对应的门店ID,直接对分组结果排序后取第一条即可:
SELECT COUNT(*) AS `count`, store_id FROM sakila.customer GROUP BY store_id ORDER BY `count` DESC LIMIT 1;
执行后会返回count=326、store_id=1的完整行记录。
方案3:适配最大值并列场景(MySQL 8.0+支持)
如果存在多个门店的客户数并列最大值的情况,可以用窗口函数RANK()获取所有并列第一的记录:
WITH store_stat AS ( SELECT COUNT(*) AS `count`, store_id, RANK() OVER(ORDER BY COUNT(*) DESC) AS rank_num FROM sakila.customer GROUP BY store_id ) SELECT `count` AS max_customer_count, store_id FROM store_stat WHERE rank_num = 1;
注意:
count是SQL内置函数名,作为自定义别名使用时建议用反引号包裹,避免出现语法冲突。
内容的提问来源于stack exchange,提问作者marksman123
相关产品推荐
相关产品推荐

