多个计数合而为一 table 无意中对行中的列求和
Multiple counts in one table UNINTENTIONALLY summing columns in rows
我正在尝试计算休息期间每天的点击次数,以便全部显示在一个 table 中。
SELECT module, COUNT( * )
FROM mdl_log AS l
WHERE (FROM_UNIXTIME( l.`time` ) BETWEEN '2014-12-16 00:00:00' AND '2014-12-17 00:00:00')
GROUP BY module
给我一天(第 16 天)所需要的东西
module Count(*)
admin 11
assign 1
course 20
outcome 2
user 3
但是当我尝试在同一个 table 中获取多天时,它会给我每一行中的列的总和。
SELECT module
,(SELECT COUNT( * )
FROM mdl_log as l
WHERE (FROM_UNIXTIME( l.`time` ) BETWEEN '2014-12-12 00:00:00' AND '2014-12-13 00:00:00')
) AS "12/12/2014"
,(SELECT COUNT( * )
FROM mdl_log AS l
WHERE (FROM_UNIXTIME( l.`time` ) BETWEEN '2014-12-16 00:00:00' AND '2014-12-17 00:00:00')
) AS "12/16/14"
FROM mdl_log
group by module
这个...
module 12/12/14 12/16/14
admin 1 37
assign 1 37
calendar 1 37
course 1 37
forum 1 37
grade 1 37
hsuforum 1 37
library 1 37
login 1 37
lti 1 37
message 1 37
outcome 1 37
question 1 37
quiz 1 37
role 1 37
url 1 37
user 1 37
webservice 1 37
workshop 1 37
你能给我一些关于如何得到它的建议吗?
例如
module 12/12/14 12/16/14
admin 1 11
assign 0 1
user 0 3
等等
在 count
函数中应用日期标准:
SELECT module,
COUNT(IF(FROM_UNIXTIME( l.`time` ) BETWEEN '2014-12-12 00:00:00' AND '2014-12-13 00:00:00', 1, NULL) AS "12/12/2014",
COUNT(IF(FROM_UNIXTIME( l.`time` ) BETWEEN '2014-12-16 00:00:00' AND '2014-12-17 00:00:00', 1, NULL) AS "12/16/2014"
FROM mdl_log
group by module
我正在尝试计算休息期间每天的点击次数,以便全部显示在一个 table 中。
SELECT module, COUNT( * )
FROM mdl_log AS l
WHERE (FROM_UNIXTIME( l.`time` ) BETWEEN '2014-12-16 00:00:00' AND '2014-12-17 00:00:00')
GROUP BY module
给我一天(第 16 天)所需要的东西
module Count(*)
admin 11
assign 1
course 20
outcome 2
user 3
但是当我尝试在同一个 table 中获取多天时,它会给我每一行中的列的总和。
SELECT module
,(SELECT COUNT( * )
FROM mdl_log as l
WHERE (FROM_UNIXTIME( l.`time` ) BETWEEN '2014-12-12 00:00:00' AND '2014-12-13 00:00:00')
) AS "12/12/2014"
,(SELECT COUNT( * )
FROM mdl_log AS l
WHERE (FROM_UNIXTIME( l.`time` ) BETWEEN '2014-12-16 00:00:00' AND '2014-12-17 00:00:00')
) AS "12/16/14"
FROM mdl_log
group by module
这个...
module 12/12/14 12/16/14
admin 1 37
assign 1 37
calendar 1 37
course 1 37
forum 1 37
grade 1 37
hsuforum 1 37
library 1 37
login 1 37
lti 1 37
message 1 37
outcome 1 37
question 1 37
quiz 1 37
role 1 37
url 1 37
user 1 37
webservice 1 37
workshop 1 37
你能给我一些关于如何得到它的建议吗? 例如
module 12/12/14 12/16/14
admin 1 11
assign 0 1
user 0 3
等等
在 count
函数中应用日期标准:
SELECT module,
COUNT(IF(FROM_UNIXTIME( l.`time` ) BETWEEN '2014-12-12 00:00:00' AND '2014-12-13 00:00:00', 1, NULL) AS "12/12/2014",
COUNT(IF(FROM_UNIXTIME( l.`time` ) BETWEEN '2014-12-16 00:00:00' AND '2014-12-17 00:00:00', 1, NULL) AS "12/16/2014"
FROM mdl_log
group by module