我正在尝试请求我的数据库获取按行数排序的过去6个月内特定登录的行数。
输出必须是这样的:
我的要求是这样的:
SELECT count(*) FROM table1 where (`EndDate` BETWEEN DATE_SUB(CURDATE(), INTERVAL 6 MONTH) and CURDATE()) AND the_login LIKE 'LOGIN 1';
它显示了过去6个月的每一行。 您能否完成我的请求或在需要时进行更改?
答案 0 :(得分:2)
您可以使用YEAR()
和WEEK()
从日期中提取它们,然后按它们分组。
请注意,我并非只使用WEEK
,因为它还不够,如果您在6月之前执行此操作,则可能会误解数周。
此外,请勿使用LIKE
进行完全匹配,仅将其用于部分比较。
SELECT YEAR(t.endDate) as m_Year, WEEK(t.endDate) as m_Week, count(*)
FROM table1 t
where t.`EndDate` BETWEEN DATE_SUB(CURDATE(), INTERVAL 6 MONTH)
and CURDATE())
AND t.the_login = 'LOGIN 1'
GROUP BY m_Year,m_Week