【发布时间】:2016-08-06 03:58:50
【问题描述】:
我有一张包含许多不同产品订单的表格。目前,我可以使用如下查询计算每个产品 ID 的订单数:
SELECT ProductId, COUNT(*) as NumOrders from Orders
GROUP BY ProductId;
这给出了一个表格,列出了所有产品 ID 和该产品的订单数量。我还可以通过添加一个简单的 where 子句来计算符合特定条件的订单数:
SELECT ProductId, COUNT(*) as NumCriteria from Orders
WHERE HasCriteria = 1
GROUP BY ProductId;
这为我提供了一个类似的产品 ID 表和该产品的订单数量,但由于并非所有订单都符合该标准,因此数量较少。
我需要做的是在一个查询中运行这两个计数,以便它显示符合条件的订单数和每个产品 ID 的订单总数,然后还计算符合条件的订单的百分比每个产品 ID 的标准。基本上是这样的:
SELECT Product ID,
COUNT( *meets criteria* ),
COUNT( *total* ),
( COUNT( *meets criteria* ) * 100 / COUNT( *total* ) )
所以我的输出给了我这样的东西:
ProductID | NumCriteria | NumOrders | Percent
0001 | 5 | 10 | 50
0002 | 4 | 20 | 20
0003 | 2 | 6 | 33
到目前为止,我见过的所有计算某事物百分比的方法都是用于计算表中符合条件的行的百分比,但我需要表中每个不同产品 ID 的百分比。有没有办法在一个查询中做到这一点?
编辑:原始表是包含订单 ID、产品 ID 和客户信息的订单。相同的产品出现在多个订单中。一个简短的例子是:
Order ID | Product ID | Other info...
001 | 0002 | ...
002 | 0002 | ...
003 | 0001 | ...
004 | 0003 | ...
005 | 0001 | ...
006 | 0002 | ...
007 | 0004 | ...
所以对这个表的第一个查询的结果是:
Product ID | NumOrders
0001 | 2
0002 | 3
0003 | 1
0004 | 1
【问题讨论】:
-
能否提供样本数据?
-
提供了上面表格的一个小样本。
标签: sql