mysql - 在 MySQL 查询中使用分组值而不是表值

标签 mysql sql

我需要按日期对一些数据进行分组,但我有一个非常特殊的情况,即最终字段的名称应该与原始字段的名称相同,而且我不能在 GROUP BY< 中使用表达式

我用一些示例数据创建了这个 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:我不能重命名该字段,它的末尾应该有名称“date”,这对我来说是不可能的:

SELECT DATE_FORMAT(`date`, "%Y-%m") AS `date2`, SUM(pageviews) AS pageviews
FROM `domains_data`
GROUP BY `date2`
ORDER BY `date` DESC

有什么方法可以用 MySQL 做到这一点?

最佳答案

是否允许使用嵌套查询?

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

关于mysql - 在 MySQL 查询中使用分组值而不是表值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20499812/

相关文章:

php - MySQL - 根据值选择列

php - 如何使用数组 "echo"中的记录用于另一个 php select

php - MySQL 大 FK 标识符

c# - 将同一列中的不同值相互附加

sql - 如何将此 LEFT JOIN 返回的行数限制为一?

php - OpenCart - 从产品查询中删除一个类别及其子类别

PHP 正在更新一个不存在的数据库索引

mysql - 汇总mysql中的许多表

c# - 如何在 C# 中创建将部署在 DBO 以外的模式中的 CLR 过程

MySQL明显的计数,如果条件独特