我有一张包含铅金额,optyid,员工姓名和配额的表格。
我想写一个查询,让我可以获得员工的平均潜在客户金额和配额总和。
我认为这很容易,但问题是,对于不包含optyid的行,超前金额显示为0,铅金额显示为0作为占位符。当我取得所有可用铅量的平均值时,由于包含0串,所以这是错误的。为了避免这种情况,我编写了以下查询。
SELECT
employeename,
avg(leadamount) AS [avglead],
0 AS QUOTA
FROM TABLE
WHERE TABLE.optyid IS NOT NULL
GROUP BY employeename
UNION
SELECT
employeename,
0 AS [avglead],
sum(quota) AS [QUOTA]
FROM TABLE
WHERE TABLE.optyid IS NULL
GROUP BY employeename
是否有将这些合并在一起以便我只从TABLE拉出一次? TABLE太大了,有两个子查询需要很长时间才能完成。我知道我可以使用左连接到同一个表,但我认为这不会节省大量时间,因为它仍然需要两次查询。
我感谢任何输入
答案 0 :(得分:1)
SELECT
employeename,
avg(CASE WHEN TABLE.optyid IS NULL THEN leadamount END) AS [avglead],
sum(CASE WHEN TABLE.optyid IS NOT NULL THEN quota END) AS [QUOTA]
FROM TABLE
GROUP BY employeename