如果这是你需要的不完全是,它可能会相处你一些方法,或给你一些想法:
SELECT contest_id, YEAR(submission_date) AS submission_period, COUNT(*),
"Y" AS sub_type
FROM submissions
GROUP BY 1, 2
UNION ALL
SELECT contest_id, MONTH(submission_date) AS submission_period, COUNT(*),
"M" AS sub_type
FROM submissions
GROUP BY 1, 2
UNION ALL
SELECT contest_id, DAY(submission_date) AS submission_period, COUNT(*),
"D" AS sub_type
FROM submissions
GROUP BY 1, 2
ORDER BY 1, 4, 2
但是,如果你按年看月而不是月份“或”年份周“,那么我强烈建议您考虑创建”时间维度“,例如数据仓库应用程序中使用的”时间维度“。这是每天看起来有点像这样的记录表:
Date Year Month Week Quarter Day MthName
2013-01-01 | 2013 | 2013-01 | 2013W01 | 2013Q1 | Tues | January
2013-01-02 | 2013 | 2013-01 | 2013W01 | 2013Q1 | Wed | January
..
2013-03-20 | 2013 | 2013-03 | 2013W12 | 2013Q1 | Wed | March
..
2013-05-01 | 2013 | 2013-05 | 2013W18 | 2013Q2 | Wed | May
通过加入提交日期此表,您可以通过任何列组适合您的需求。
专家提示:不要叫它们什么,我已经标记这些头,将保留字会引起你痛苦:-)
来源
2013-03-24 08:07:28
RET
感谢您的回答,但是这并没有回答这个问题,我的问题是如何通过使用比赛日期按小时/天/周/月/年划分比赛的sql语句编写一个组。 – 2013-03-23 17:35:56