我有下面的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相关问答推荐

MySQL连接序列

LaravelEloquent ToSql()缺少连接表

从MySQL JSON列中检索数组中的所有答案

MySQL grant语句中的用户名区分大小写

从表中 Select 具有不同顺序的列

错误:此查询集包含对外部查询的引用,并且只能在子查询中使用

如何分解分组依据的数据?

模拟Mysql Cursor类的fetchone()方法,并将其返回值设置为None

特定时间段内每个客户的运行总计

关于设置为 NOT NULL 时的 CHAR 默认值

如何在 axios 请求中将更新的设置状态值作为参数传递

即使使用索引,MySQL 计数和按查询分组也很慢

在 SQL 中的 case 语句之后将新列转换为 INT

如何从将分钟、天、月和年存储在不同列中的表中查询数据

具有别名主机的 ssh 反向 mysql tunel

我将如何构建一个 SQL 查询来从交易表中 Select 第一次存款、第二次存款和额外存款

PHP,MySQL 错误:列计数与第 1 行的值计数不匹配

PHP MySQLI 防止 SQL 注入

你能推荐一个免费的 Linux 轻量级 MySQL GUI 吗?

MySQL更新查询与左连接和分组依据