【发布时间】:2014-01-16 15:25:24
【问题描述】:
我有一个表来跟踪我们的用户登录。我们有一个用于管理员等的仪表板,显示运行总数的图表。
我使用以下查询 (found here):
SELECT t.date, @running_total := @running_total + t.count AS count
FROM (
SELECT COUNT(*) AS count, DATE(datetime) AS date
FROM user_login
WHERE datetime >= '2013-05-01'
GROUP BY date
) t
JOIN (
SELECT @running_total := t2.starting_total
FROM (
SELECT COUNT(*) as starting_total
FROM user_login
WHERE datetime < '2013-05-01'
) t2
) initialize;
user_login 有一个 datetime 列和一个 user_id。但是,现在我还被要求显示唯一用户登录的运行总数(例如:用户 1 一天登录两次,用户 2 登录一次,即 3 次登录,但 2 次“唯一”)。我尝试这样做:
SELECT t.date, @running_total := @running_total + t.count AS count
FROM (
SELECT COUNT(DISTINCT user_id) AS count, DATE(datetime) AS date
FROM user_login
WHERE datetime >= '2013-05-01'
GROUP BY date
) t
JOIN (
SELECT @running_total := t2.starting_total
FROM (
SELECT COUNT(DISTINCT user_id) as starting_total
FROM user_login
WHERE datetime < '2013-05-01'
) t2
) initialize;
但它给了我不正确的结果,我假设是因为在SELECT COUNT(DISTINCT user_id) AS count, DATE(datetime) AS date 中选择计数和日期会将其丢弃。
【问题讨论】:
标签: mysql