我有下面的db表,我希望能够统计每个销售人员的特定产品的销售情况.

|------------|------------|------------|
|id          |user_id     |product_id  |
|------------|------------|------------|
|1           |1           |2           |
|2           |1           |4           |
|3           |1           |2           |
|4           |2           |1           |
|------------|------------|------------|

我希望能够创建如下结果集:;

|------------|-------------|------------|------------|------------|
|user_id     |prod_1_count |prod_2_count|prod_3_count|prod_4_count|
|------------|-------------|------------|------------|------------|
|1           |0            |2           |0           |1           |
|2           |1            |0           |0           |0           |
|------------|-------------|------------|------------|------------|

我正在用这些数据创建图表,再一次(像今天早些时候一样)我无法计算列总数.我试过了;

SELECT user_id, 
(SELECT count(product_id) FROM sales WHERE product_id = 1) AS prod_1_count,
(SELECT count(product_id) FROM sales WHERE product_id = 2) AS prod_2_count,
(SELECT count(product_id) FROM sales WHERE product_id = 3) AS prod_3_count,
(SELECT count(product_id) FROM sales WHERE product_id = 4) AS prod_4_count 
FROM sales GROUP BY user_id; 

我可以理解为什么这不起作用,因为对于每个括号中的SELECT,用户id与主SELECT语句中的外部用户id不匹配.

推荐答案

您可以使用SUMCASE执行此操作:

select user_id,
  sum(case when product_id = 1 then 1 else 0 end) as prod_1_count,
  sum(case when product_id = 2 then 1 else 0 end) as prod_2_count,
  sum(case when product_id = 3 then 1 else 0 end) as prod_3_count,
  sum(case when product_id = 4 then 1 else 0 end) as prod_4_count
from your_table
group by user_id

Mysql相关问答推荐

如何显示患者预约中的专业人员姓名?

从 SQL 中的左连接和内连接中减去计数

非常规字符的不正确字符串值错误

了解 SQL 中的元组语法

如何使用 IF() 条件在 MySQL 中显示真假行

MySQL 查询组按日期(12 小时间隔)

使用 ON DUPLICATE KEY 将列增加一定数量 MySQL NodeJS

MySQL按连续值和计数分组

基于两个单元格值的 SQL 过滤表

如何过滤表格,以便它显示最新的数据?

判断一对记录是否属于多个组ID

结果差异(MySQL 5.7 vs MySQL 8.0)

服务器返回无效的时区.转到高级选项卡并手动设置 servertimezone 属性

MySQL 8.0 - 客户端不支持服务器请求的认证协议;考虑升级 MySQL 客户端

加载 MySQLdb 模块时出错“您安装了 mysqlclient 还是 MySQL-python?”

org.hibernate.InstantiationException:没有实体的默认构造函数::principal.Cliente

MySQL失败:mysql“错误1524(HY000):插件'auth_socket'未加载”

mysqld:无法将目录更改为数据.服务器没有启动

AWS:无法从我的机器连接到 RDS 数据库

WooCommerce:在数据库中查找产品