【发布时间】:2021-03-15 18:47:55
【问题描述】:
我有如下表格
订购
| OrderID | UserID |
|---|---|
| 1 | 7 |
| 2 | 1 |
| 3 | 13 |
| 4 | 7 |
出租物品
| RentalItemsID | ItemID | ReturnTypeID | OrderID |
|---|---|---|---|
| 1 | 9 | 5 | 1 |
| 2 | 3 | 4 | 2 |
| 3 | 4 | 5 | 2 |
| 4 | 5 | 5 | 2 |
| 5 | 10 | 4 | 3 |
| 6 | 11 | 4 | 4 |
| 7 | 14 | 5 | 4 |
ReturnTypeID 5:缺陷返回
ReturnTypeID 4:正常返回
select [order].UserID,
(
select avg(case when ReturnTypeID = 5 then 1.0 else 0 end) as DefectedRate
from RentalItems
where RentalItems.OrderID = [Order].OrderID
) as DefectedReturnRate
from [Order]
where OrderID in (select OrderID from RentalItems where ReturnTypeID=5)
当前输出:计算为:DefetedReturnByUserPerOrder/AllReturnsByUserPerOrder
| UserID | DefectReturnRate | Showing Calculation, (Not incl. in output) |
|---|---|---|
| 7 | 1.00 | Order1: 1/1 - Contained 1 item and it was defected returned |
| 1 | 0.66 | Order2: 2/3 - Contained 3 items and 2 were defected returned |
| 7 | 0.50 | Order4: 1/2 - Contained 2 items and 1 was defected returned |
如您所见,它计算的是每个订单的 DefetecedReturnRate,而不是用户在所有订单中租用的物品总数
所需的输出: TotalDefetedReturnByUserForALLOrders/AllReturnsByUserForAllOrders
| UserID | DefectReturnRate | Showing Calculation, (Not incl. in output) |
|---|---|---|
| 7 | 0.66 | Order1&4: 2/3 - Total Rented items by User 7 were 3 and 2 were defected Returns |
| 1 | 0.66 | Order2: 2/3 - Contained 3 items and 2 were defected returned |
我认为这将是我的最后一个问题,因此我们将不胜感激任何帮助。我可以提供 DML+DDL 数据,但我不确定如何提供。我试图生成脚本,但它只生成表而不是数据。但表格和数据与我在上面的表格中输入的完全一样。
【问题讨论】:
-
您通过编写创建临时表语句(或表变量语句)和编写插入少量数据样本的语句来创建DDL+DML: ) 您可以在此站点上的许多问题和答案中看到它。 Example
-
哦……我明白了。我认为这是可以生成的东西。谢谢!。
-
您可以从SSMS生成它stackoverflow.com/questions/982568/…
-
谢谢@Charlieface,我刚试了一下,效果很好!!
标签: sql sql-server tsql