我正在尝试编写一个查询,该查询将返回事件表中每个事件在销售日期与非销售日期期间下的订单数。
订单表
OrderID (PK, INT)OrderDate (DATE)EventID (INT,FK | ) | |
---|---|---|
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 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<>在这里小提琴