You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MySQL中统计各医生对应的产品线数量?

MySQL 按医生统计各产品线数量的实现方案

你需要的统计可以通过在原查询基础上添加GROUP BY分组和COUNT()聚合函数实现,具体SQL如下:

USE avant_medical;

SELECT 
    sales.doctor_id AS DoctorID,
    line_products.id AS LineProductID,
    line_products.name AS LineProductName,
    COUNT(*) AS quantity
FROM `doctors` 
INNER JOIN `sales` ON `doctors`.`id` = `sales`.`doctor_id` 
INNER JOIN `inventories` ON `sales`.`id` = `inventories`.`sale_id`
INNER JOIN `products` ON `inventories`.`product_id` = `products`.`id`
INNER JOIN `line_products` ON `products`.`lineProduct_id` = `line_products`.`id`
GROUP BY sales.doctor_id, line_products.id, line_products.name
ORDER BY `doctors`.`id` ASC, quantity DESC;

关键说明:

  • COUNT(*):统计每组(医生+对应产品线)的记录数,也就是该医生使用该产品线的数量
  • GROUP BY:按医生ID、产品线ID、产品线名称分组,确保每个医生的每条产品线单独统计(MySQL默认开启ONLY_FULL_GROUP_BY模式,要求非聚合字段必须出现在GROUP BY中)
  • 额外添加quantity DESC:让每个医生下的产品线按数量从多到少排序,更直观

结果说明:

上述SQL会返回结构化的统计数据,示例如下:

DoctorIDLineProductIDLineProductNamequantity
17产品线7名称4
16产品线6名称3

你期望的那种“Doctor 1”开头的分层展示格式,MySQL原生SELECT语句无法直接生成(它仅返回规整的行数据),这种格式需要在应用层(比如后端代码、报表工具)中处理:先按DoctorID分组遍历,输出医生标题后再渲染对应的产品线统计表格即可。

内容的提问来源于stack exchange,提问作者user20389386

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 22:20:20