如何解决MySQL COUNT查询问题?按order_id和日期统计销售员需求是否正确
需求准确性判定
该需求表述不准确,无实际业务价值,原因如下:
order_id是orders表的主键,单条order_id对应唯一的订单记录,每条订单仅关联1个sales_id(即唯一的销售员)- 若严格按要求聚合统计,最终所有分组的销售员数量结果都为1,完全不符合常规统计诉求的预期
对应SQL编写
1. 严格按原需求编写的SQL(无实际业务意义)
SELECT order_id, `date`, COUNT(DISTINCT sales_id) AS salesman_count FROM orders GROUP BY order_id, `date`;
2. 修正后合理需求的SQL
常规场景下该需求的真实诉求应为按日期统计当日产生订单的去重销售员数量,对应SQL如下:
SELECT `date`, COUNT(DISTINCT sales_id) AS daily_salesman_count FROM orders GROUP BY `date`;
如果需求为按日期和销售员维度统计对应订单量,对应SQL如下:
SELECT o.`date`, o.sales_id, s.commision, COUNT(o.order_id) AS order_count FROM orders o LEFT JOIN salesman s ON o.sales_id = s.sales_id GROUP BY o.`date`, o.sales_id, s.commision;
内容的提问来源于stack exchange,提问作者Md. Ashraful Haque
相关产品推荐
相关产品推荐

