[英]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組,因此可以將同一個月的數據加在一起
非常感謝你的幫助
您需要從日期中提取年份和月份,並在select
和group 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.