sql:对返回结果的多余行进行聚合重复,这样我就可以在每行中使用它进行计算

  • 本文关键字:就可以 计算 结果 返回 多余 sql sql
  • 更新时间 :
  • 英文 :


我想做的是将一列分组,我想将其与类似但聚合的列进行比较,以便该列中只有一行。我想将聚合行与分组中的每一行进行比较。我的想法是这样的,但也许还有更好的方法?

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

如果计数是整数,我将强制转换添加到十进制,这样分数就不会丢失。奇怪的格式只是为了可读性。

相关内容