我需要按日期对一些数据进行分组,但我有一个非常特殊的情况,即最终字段的名称应该与原始字段的名称相同,我不能在GROUP BY
<中使用表达式/ p>
我用一些示例数据创建了这个sqlfiddle:
http://sqlfiddle.com/#!2/8771a/1
我需要这个结果:
DATE PAGEVIEWS
2013-12 69
2013-11 70
注意1 :我无法更改群组,如果我这样做,我会得到结果,但我需要按date
分组,而日期应该是格式化的日期,而不是表格中的真实日期:
SELECT DATE_FORMAT(`date`, "%Y-%m") AS `date`, SUM(pageviews) AS pageviews
FROM `domains_data`
GROUP BY DATE_FORMAT(`date`, "%Y-%m")
ORDER BY `date` DESC
注2 :我无法重命名该字段,最后应该有“日期”名称,这对我来说是不可能的:
SELECT DATE_FORMAT(`date`, "%Y-%m") AS `date2`, SUM(pageviews) AS pageviews
FROM `domains_data`
GROUP BY `date2`
ORDER BY `date` DESC
有一些方法可以用MySQL吗?
答案 0 :(得分:2)
是否允许使用嵌套查询?
SELECT `date`, SUM(pageviews) AS pageviews FROM
(SELECT DATE_FORMAT(`date`, "%Y-%m") AS `date`, SUM(pageviews) AS pageviews
FROM `domains_data`
GROUP BY `date`) AS Ref
GROUP BY `date`
ORDER BY `date` DESC
答案 1 :(得分:2)
如果您可以更改from
子句:
SELECT `date`, SUM(pageviews) AS pageviews
FROM (select DATE_FORMAT(`date`, "%Y-%m") AS `date`, pageviews
from `domains_data` dd
) dd
GROUP BY `date`
ORDER BY `date` DESC;
但是,考虑到您无法更改group by
的限制,您可能无法更改from
。你能解释为什么你的查询有这些限制吗?