id modid userid timemodified FROM_UNIXTIME(timemodified,'%d-%m-%Y')
410 32 46 1438971403 03-08-2015
411 32 46 1438971403 03-08-2015
412 66 977 1438971403 07-08-2015
412 66 977 1438971403 07-08-2015
413 67 34 1438971423 07-08-2015
414 68 16 1438971424 07-08-2015
415 132 23 1438972154 07-08-2015
416 134 2 1438972465 08-08-2015
417 115 2 1438996430 08-08-2015
418 130 977 1438996869 08-08-2015
通过从今天的日期开始计算,我从过去4周前的框架中得到了这个查询。现在,我想单独向用户展示4周,如第1周,第2周,第3周和第3周。第4周,无论是列式还是行式,都是最好的。
In detailed, from the above query, I need to separate data from week1 to week4,like
Week4 : No user
Week3 : 2 users (2,977)
Week2 : 4 users (16, 23, 34, 977)
Week1 : 1 user (46)
SET @unix_four_weeks_ago = UNIX_TIMESTAMP(curdate()) - 2419200;
SELECT *,FROM_UNIXTIME(timemodified,'%d-%m-%Y') FROM mod_users WHERE timemodified >= @unix_four_weeks_ago
答案 0 :(得分:0)
我的猜测是,您希望根据timemodified
列分割每周的用户数。我会使用WEEK()
函数来做到这一点。
以下SQL将添加weeknumber
列以标识周编号:
SELECT WEEK(timemodified) weeknumber, dates.*
FROM dates
然后,如果您想获得不同的用户数,可以使用以下SQL:
SELECT WEEK(timemodified) weeknumber, COUNT(DISTINCT(userid)) users_count
FROM dates
GROUP BY weeknumber
您还可以添加WHERE
子句,以便只根据需要获得特定周数。因此,为了从2015年8月23日开始的最后4周,我会这样做:
SELECT WEEK(timemodified) weeknumber, COUNT(DISTINCT(userid)) users_count
FROM dates
WHERE WEEK(timemodified) <= WEEK('2015-08-23')
AND WEEK(timemodified) > (WEEK('2015-08-23') - 4)
GROUP BY weeknumber
我希望我的假设是正确的。 : - )