如何从Group By中的复杂子查询中获取值?

时间:2018-07-03 09:14:46

标签: sql-server

我正在尝试对数据进行分组并计算整体的命中率。

分组有效,但我无法获得总音量。注释掉的行不能识别T。

SELECT P.[LiqProvider], P.[Volume], 
-- P.[Volume]/(SELECT SUM([Volume]) FROM T)

FROM (
    SELECT *
    FROM (
        SELECT A.[LiqProvider] ,COUNT(A.[ExecSignedAmount]) AS Trades, SUM(ABS(A.[ExecSignedAmount])) AS Volume
        FROM (
               SELECT  [LiqProvider],[Symbol],[ExecSignedAmount]
              FROM [BT].[LB].[FilledOrders] 
              WHERE [OrderDate] = '2018-07-02'
             UNION ALL 
             SELECT  [LiqProvider],[Symbol],[ExecSignedAmount]
              FROM [BT].[LB2].[FilledOrders] 
              WHERE [OrderDate] = '2018-06-02'
          ) AS A 
        GROUP BY A.[LiqProvider]
      ) AS T 
  ) AS P

2 个答案:

答案 0 :(得分:0)

它可能和您指定的一样简单(AS卷),但是您注释掉的行试图找到[卷],如果这有意义,那么我最近才开始使用SQL,所以我不确定这似乎是什么我会检查。让我知道是否有帮助,谢谢。

答案 1 :(得分:0)

您的外部查询不知道任何T表。它知道一个P表。由于您既需要数量及其总和,因此应使用OVER:

SELECT P.[LiqProvider], P.[Volume], SUM(P.[Volume]) over ()
FROM.....(the rest of your code)