簡體   English   中英

選擇MySQL中日期最高的行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM