[英]Select row with the highest date in MySQL
我有一个表,每个用户每天都有行。
我想按月和年分组以生成给定月份的摘要。
问题是,它正在选择第一行的值(即9月1日而不是9月5日),这给了我错误的数字,因为我想要该列的最新运行总计。
我努力了:
SELECT SUM(prospectCount) FROM report_sales_day AS RSD
WHERE userId = 93
AND YEAR(date) = YEAR('2014-09-01')
AND MONTH(date) = MONTH('2014-09-01')
AND (SELECT MAX(RSDI.date)
FROM report_sales_day AS RSDI
WHERE MONTH(RSDI.date) = MONTH(RSD.date)
AND YEAR(RSDI.date) = YEAR(RSD.date)) = MAX(date)
GROUP BY YEAR(date), MONTH(date)
但这只是给我一个错误,我想不出其他任何方法来做到这一点。
有谁知道我需要做些什么才能达到我想要的结果?
我的表中有很多列,有些需要SUM(),AVG(),而另一些只需要给定月份的最后一个值。
尝试这个:
SELECT SUM(prospectCount)
FROM report_sales_day AS RSD
INNER JOIN (SELECT userId, MAX(RSDI.date) AS `date`
FROM report_sales_day AS RSDI
WHERE MONTH(RSDI.date) = MONTH('2014-09-01') AND YEAR(RSDI.date) = YEAR('2014-09-01')
) AS A ON RSD.userId = A.userId AND RSD.date = A.date
WHERE userId = 93 AND YEAR(RSD.date) = YEAR('2014-09-01') AND
MONTH(RSD.date) = MONTH('2014-09-01')
GROUP BY YEAR(RSD.date), MONTH(RSD.date)
我认为您的查询应该是这样的。 您必须在`date`附近使用反引号
SELECT SUM(prospectCount) FROM report_sales_day AS RSD
WHERE userId = 93
AND YEAR(`date`) = YEAR('2014-09-01')
AND MONTH(`date`) = MONTH('2014-09-01')
AND MAX(`date`) = (SELECT MAX(RSDI.date)
FROM report_sales_day
WHERE MONTH(RSDI.date) = MONTH(RSD.date)
AND YEAR(RSDI.date) = YEAR(RSD.date))
GROUP BY YEAR(`date`), MONTH(`date`)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.