簡體   English   中英

SQL按年和月排序日期

[英]SQL sorting date by year and month

SELECT ShopOrder.OrderDate
, Book.BookID
, Book.title
, COUNT(ShopOrder.ShopOrderID) AS "Total number of order"
, SUM (Orderline.Quantity) AS "Total quantity"
, Orderline.UnitSellingPrice * Orderline.Quantity  AS "Total order value"
, book.Price * Orderline.Quantity AS "Total retail value" 
      FROM ShopOrder
      JOIN Orderline
        ON Orderline.ShopOrderID = ShopOrder.ShopOrderID
      JOIN Book
        ON Book.BookID = Orderline.BookID 
      JOIN Publisher
        ON Publisher.PublisherID = Book.PublisherID
     WHERE Publisher.name = 'Addison Wesley'
     GROUP 
        BY ShopOrder.OrderDate
, Book.BookID
, Book.title
, Orderline.UnitSellingPrice
, Orderline.Quantity, book.Price 
, Orderline.Quantity, ShopOrder.ShopOrderID
     ORDER
        BY ShopOrder.OrderDate   

請看圖片

我想按年份和月份查詢OrderDate組,因此可以將同一個月的數據加在一起

非常感謝你的幫助

您需要從日期中提取年份和月份,並在selectgroup by列中使用它們。 您如何執行此操作很大程度上取決於數據庫。 許多支持函數稱為year()month()

然后,您只需要按所需的字段進行匯總。 像這樣:

SELECT YEAR(so.OrderDate) as yyyy, MONTH(so.OrderDate) as mm,      
       b.BookID, b.title,
       COUNT(so.ShopOrderID) AS "Total number of order",
       SUM(ol.Quantity) AS "Total quantity",
       SUM(ol.UnitSellingPrice * ol.Quantity  AS "Total order value",
       SUM(b.Price * ol.Quantity) AS "Total retail value" 
FROM ShopOrder so JOIN
     Orderline ol
     ON ol.ShopOrderID = so.ShopOrderID JOIN
     Book b
     ON b.BookID = ol.BookID JOIN
     Publisher p
     ON p.PublisherID = b.PublisherID
WHERE p.name = 'Addison Wesley'
GROUP BY YEAR(so.OrderDate), MONTH(so.OrderDate), b.BookID, b.title
ORDER BY MIN(so.OrderDate)

請注意,表別名的使用使查詢更易於編寫和閱讀。

以上內容適用於MySQL,DB2和SQL Server。 在Postgres和Oracle中, to_char(so.OrderDate, 'YYYY-MM')

對於組,可以使用datepart函數

GROUP BY (DATEPART(yyyy, ShopOrder.OrderDate), DATEPART(mm, ShopOrder.OrderDate))

您應該匯總

, Orderline.UnitSellingPrice * Orderline.Quantity  AS "Total order value"
, book.Price * Orderline.Quantity AS "Total retail value" 

否則,所有count(...)值都等於MONTH(myDate) group by YEAR(myDate)MONTH(myDate)datepart函數的便捷快捷方式(在MS SQL Server上)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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