我有两个表用户和login_table
用户表
id Name status
----------------------
1 Johan 1
2 Smith 1
. . . .
----------------------登录表
id user_id login_date hours
-------------------------------------
1 1 2017-01-01 8
2 1 2017-01-02 7
3 2 2017-01-03 12
4 2 2017-01-02 10
. . . .
-------------------------------------不管怎样,我们可以像下面这样获取数据吗?
index user_id name Jan Feb Mar .... Dec Total
---------------------------------------------------------
1 1 Johan 100 120 115 .... 120 455
1 2 Smith 100 110 120 .... 110 440
. . . . . . . .
---------------------------------------------------------我们已经使用PHP/MYSQL完成了这一工作,但是处理和执行需要很长时间。无论如何,我们是否可以直接从MySQL获取这个信息?
发布于 2017-12-18 13:03:05
我不知道index是什么,但其余的是一个连接、group by和条件聚合:
select u.id, u.name,
sum(case when month(l.login_date) = 1 then hours else 0 end) as jan,
sum(case when month(l.login_date) = 2 then hours else 0 end) as feb,
. . .,
sum(hours)
from users u join
login l
on u.id = l.login_id
where l.login_date >= '2017-01-01' and l.login_date < '2018-01-01'
group by u.id, u.name;备注:
>=和<的。这是比较可取的,因为MySQL可以对数据使用索引。index是什么。也许你是说statushttps://stackoverflow.com/questions/47869066
复制相似问题