我想做的是将一列分组,我想将其与类似但聚合的列进行比较,以便该列中只有一行。我想将聚合行与分组中的每一行进行比较。我的想法是这样的,但也许还有更好的方法?
select CustomerID, count(OrderID), count(OrderID)/TotalOrders from Order_T
full outer join (select count(OrderID) TotalOrders from Order_T)
group by CustomerID;
我相信这不会像现在这样,但我只想展示我的思路。我想要一个特定客户的订单数量除以表中的订单总数。客户在订单中所占的百分比。这能在一句话中完成吗?可能和我想的完全不同。
实现这一点的一种方法是简单地在select语句中引入总计数作为子查询。这是使用SQL Server的T-SQL语法编写的,但除了强制转换之外,它应该是通用SQL。
select
CustomerID,
count(OrderID),
count(OrderID) / cast( (select count(OrderID) TotalOrders
from Order_T) as decimal(10,3)
)
from Order_T
group by CustomerID
如果计数是整数,我将强制转换添加到十进制,这样分数就不会丢失。奇怪的格式只是为了可读性。