我正在嘗試撰寫一個查詢,該查詢將回傳我的事件表中每個事件的銷售日期與非銷售日期的訂單數量。
訂單表
| OrderID (PK, INT) | 訂單日期(日期) | 事件 ID (INT,FK) |
|---|---|---|
| 1 | 2022-01-01 | 1 |
| 2 | 2022-01-12 | 1 |
| 3 | 2022-01-01 | 1 |
| 4 | 2022-03-10 | 2 |
| 5 | 2022-03-15 | 2 |
事件表
| 事件 ID(PK、FK、INT) | 名稱事件 (VARCHAR) | OnSalesDate (日期) |
|---|---|---|
| 1 | 滾石樂隊 | 2022-01-01 |
| 2 | 誰住在音樂會上 | 2022-03-10 |
輸出表應該類似于
| 名稱_事件 | 購買日期 | 買后 |
|---|---|---|
| 滾石樂隊 | 2 | 1 |
| 誰住在音樂會上 | 1 | 1 |
我目前的查詢是:
SELECT OrderDate , EventName
FROM Orders
Left JOIN Event on Orders.EventID = Event.EventID
WHERE Orders.OrderDate = Event.OnSaleDate
ORDER BY OrderDate;
哪些輸出:
| 訂購日期 | 事件名稱 |
|---|---|
| 2022-01-01 | 滾石樂隊 |
| 2022-01-01 | 滾石樂隊 |
| 2022-03-10 | 誰住在音樂會上 |
uj5u.com熱心網友回復:
您可以按事件資料分組以獲得您想要的結果
CREATE TABLE Orders ( `OrderID` INTEGER, `OrderDate` VARCHAR(10), `EventID` INTEGER ); INSERT INTO Orders (`OrderID`, `OrderDate`, `EventID`) VALUES ('1', '2022-01-01', '1'), ('2', '2022-01-12', '1'), ('3', '2022-01-01', '1'), ('4', '2022-03-10', '2'), ('5', '2022-03-15', '2');
CREATE TABLE Event ( `EventID` INTEGER, `NameEvent` VARCHAR(23), `OnSalesDate` VARCHAR(10) ); INSERT INTO Event (`EventID`, `NameEvent`, `OnSalesDate`) VALUES ('1', 'The Rolling Stones', '2022-01-01'), ('2', 'The Who Live in Concert', '2022-03-10');
SELECT `NameEvent`,`OnSalesDate` , SUM(`OnSalesDate` = `OrderDate`) BoughtOnSalesDate , SUM(`OnSalesDate` < `OrderDate`) BoughtAfter FROM Orders Left JOIN Event on Orders.EventID = Event.EventID GROUP BY Orders.`EventID`, `NameEvent`,`OnSalesDate` ORDER BY `OnSalesDate`;名稱事件 | 銷售日期 | 購買日期 | 買后 :------------------------ | :------------ | ----------------: | ----------: 滾石樂隊 | 2022-01-01 | 2 | 1 誰住在音樂會| 2022-03-10 | 1 | 1
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/438138.html
上一篇:如何在JSON陣列中間插入新值?
