前言:我是MySQL的新手。
我的目标是生成一个显示三列的表:user_id
,事件发生的天数(调用此eventDays
)以及自第一个事件以来的天数(称为此totalDays
)。
通过生成此表,我将能够生成一个比率,显示有多少eventDays:totalDays
(这将在Excel中完成)。
以下是我的查询。 它不会产生错误,但输出错误:user_id
按预期重新调整时,eventDays
始终会返回值' 1'并且totalDays
返回值' 0'对于每个给定的user_id
。
提前谢谢你,再次:n00b警告......
SELECT t1.user_id, COUNT(DISTINCT YEAR(t1.time_stamp), MONTH(t1.time_stamp), DAY(t1.time_stamp)) AS 'Number of unique days where an Event occured', TIMESTAMPDIFF(DAY, t1.time_stamp, t2.time_stamp) AS 'Total days since First Event'
FROM (
SELECT *
FROM first.table
GROUP BY user_id
ORDER BY time_stamp ASC) AS t1
INNER JOIN (
SELECT *
FROM second_table
GROUP BY user_id
ORDER BY time_stamp DESC) AS t2
ON t1.user_id = t2.user_id
GROUP BY t1.user_id
ORDER BY COUNT(DISTINCT YEAR(t1.time_stamp),MONTH(t1.time_stamp), DAY(t1.time_stamp)) DESC;
答案 0 :(得分:0)
- 我相信你在滥用day() function。 day()将返回1和31之间的整数。看起来像查询中生成的标志字段的出现次数或sum()会给你想要的东西。
- 因为你正确使用这个功能,所以很难说这个。首先想到的可能是一个日期小于另一个,它不计算负数或绝对值?我不记得,mysql不是我的常规rdbms。