mysql - 在同一个 mysql 表上使用内连接从 select 获取数据

标签 mysql

这是我的案例表

id empid    reaction         date_t
1  emp109   interested       2017-09-12
2  emp109   not_interested   2017-09-13
3  emp109   maybe            2017-09-13

我想要实现的是针对特定员工 ID

date_t  | number of interested  |number of not interested   | number of maybe

就像 2017-09-12 和 2017-09-13 的员工 ID emp109 一样,表格将如下所示

 date_t     | number of interested  |number of not interested   | maybe
 2017-09-12    1                        0                        0
 2017-09-13    0                       1                         1

这是我迄今为止尝试过的

SELECT * FROM
(SELECT cases.date_t, cases.empid,COUNT(cases.reaction) as interested  FROM `cases` WHERE cases.reaction="interested" and cases.empid="EMP12654"  GROUP by cases.date_t)alpha
JOIN
(SELECT cases.date_t, cases.empid,COUNT(cases.reaction) as not_interested  FROM `cases` WHERE cases.reaction="not_interested" and cases.empid="EMP12654"  GROUP by cases.date_t)beta
on alpha.date_t=beta.date_t
JOIN
(SELECT cases.date_t, cases.empid,COUNT(cases.reaction) as maybe  FROM `cases` WHERE cases.reaction="maybe" and cases.empid="EMP12654"  GROUP by cases.date_t)zeta
on alpha.date_t=zeta.date_t

这并没有给我想要的结果,我不知道如何实现它?

最佳答案

这称为旋转。

您可以使用条件聚合在 MySQL 中执行此操作:

select date_t,
    sum(reaction = 'interested') as interested,
    sum(reaction = 'not_interested') as not_interested,
    sum(reaction = 'maybe') as maybe
from your_table
group by date_t;

上面使用了 MySQL 将 true 视为 1,将 false 视为 0 的事实。

关于mysql - 在同一个 mysql 表上使用内连接从 select 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46313491/

相关文章:

mysql - 在mysql中将数据从一个数据库迁移到另一个数据库

php - MySQL 全文搜索 where category = something

php - MySQL 使用拉丁语存储希腊语

mysql - 如何合并 5 个相同的 MySQL 表?

MySQL 显示一行以不同的值多次出现?

php - 如何从 MySQL 数据库中获取特定数据到我的 PHP 表中?

mysql - 如何根据另一个表中的两个日期字段获取一个表中的记录数

mysql - 在 MySql 正则表达式查询中使用变量

用户登录的php md5密码

mysql - 如何根据某些条件将结果分组为串联结果