我有一个表格:userid和时间戳每次用户打开一个页面时会插入一个新字段。mysql得到小时/分钟/秒的总和
我试图得到小时总量/分钟/天/周出现在为多个用户1个月的间隔。
我试了一堆不同的查询,但每个都结束了非常低效率。
理想情况下,我想喜欢的东西来结束:
userid | minutes | hours | days | weeks
1 10080 168 7 1
2 1440 24 1 0
希望有人可以阐明如何做到这一点一些轻。
下面是我试过的查询:
SELECT
w.time AS `week`,
d.time AS `day`,
h.time AS `hour`,
m.time AS `minutes`
FROM (
SELECT
SUM(t.time) AS `time`
FROM (
SELECT
COUNT(DISTINCT WEEK(`timestamp`)) AS `time`
FROM table
WHERE
userid = "1"
AND
`timestamp` > DATE_SUB(NOW() , INTERVAL 1 MONTH)
GROUP BY MONTH(`timestamp`)
) t
) w,
(
SELECT
SUM(t.time) AS `time`
FROM (
SELECT
COUNT(DISTINCT DAY(`timestamp`)) AS `time`
FROM table
WHERE
userid = "52"
AND
`timestamp` > DATE_SUB(NOW() , INTERVAL 1 MONTH)
GROUP BY MONTH(`timestamp`)
) t
) d,
(
SELECT
SUM(t.timestamp) AS `time`
FROM (
SELECT
COUNT(DISTINCT HOUR(`timestamp`)) AS `time`
FROM table
WHERE
userid = "1"
AND
`timestamp` > DATE_SUB(NOW() , INTERVAL 1 MONTH)
GROUP BY DAY(`timestamp`)
) t
) h,
(
SELECT
SUM(t.timestamp) AS `time`
FROM (
SELECT
COUNT(DISTINCT MINUTE(`timestamp`)) AS `time`
FROM table
WHERE
userid = "1"
AND
`timestamp` > DATE_SUB(NOW() , INTERVAL 1 MONTH)
GROUP BY HOUR(`timestamp`)
) t
) m
似乎非常过分的这个任务,也许有人有更好的东西?
你试过什么疑问?我很难理解你的源数据。 – 2012-07-27 03:43:25
'效率低下' - 你如何衡量效率? – zerkms 2012-07-27 03:44:28
我刚刚考虑问题并创建了一些奇怪的查询。对不起,我没有打扰他们添加他们,因为他们是异乎寻常的 – Corey 2012-07-27 04:23:15