首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

SQL 聚合查詢報錯「不包含聚合函數的特定表達式」:按日期分組統計銷售額的正確寫法

     編輯:程式設計綜合問答

錯誤 SQL

SELECT SUM(XSJE / 1000) AS XSJE, SUM(SL) AS SL, LRRQ
FROM MTGL_C_KPXX
WHERE (LRRQ BETWEEN ? AND ?)
-- 缺少 GROUP BY LRRQ,LRRQ 既不在聚合函數中也不在 GROUP BY 中

正確寫法

SELECT 
    SUM(XSJE / 1000) AS XSJE, 
    SUM(SL) AS SL, 
    DATE_FORMAT(LRRQ, '%Y-%m-%d') AS dt  -- MySQL 日期格式化
FROM MTGL_C_KPXX
WHERE LRRQ BETWEEN ? AND ?
GROUP BY dt
ORDER BY dt;

核心規則

SELECT 列表中未包含在聚合函數 (SUM, COUNT, MAX...) 中的列,必須出現在 GROUP BY 子句中。

  • LRRQ 是日期時間類型,直接 GROUP BY LRRQ 會按毫秒分組,需格式化為日期 DATE_FORMAT(LRRQ, '%Y-%m-%d') (MySQL) 或 CONVERT(date, LRRQ) (SQL Server) / TRUNC(LRRQ) (Oracle) 後再分組。
  • 別名 dt 可在 GROUP BY 和 ORDER BY 中使用。

擴展

若需統計每天銷售額與數量,上述 SQL 即可;若原表 LRRQ 已為純日期類型,可直接 GROUP BY LRRQ。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved