我在 SQL Server 上運行此 SQL,它運行良好:
SELECT
X.benefit,
AVG(X.weight) AS W
FROM
(SELECT
benefit,
weight,
comp
FROM
Segment_Responses AS a
INNER JOIN
Segment_Descriptors AS b ON a.resp_id = b.resp_id
WHERE
b.comp = 0) AS X
GROUP BY
X.benefit
我的問題是……雖然我可以用 b.comp=0(并獲得好處和平均權重)然后再用 b.comp=1(b.comp 是一個布林值)運行它,但有沒有辦法構造 SQL 以便有 3 個輸出(好處,b.comp=0 時的平均權重和 b.comp=1 時的平均權重)。似乎這應該是可能的 - 我只是不知道該怎么做。謝謝。
uj5u.com熱心網友回復:
您可以查詢幾個case運算式的平均值:
SELECT
X.benefit,
AVG(CASE comp WHEN 1 THEN X.weight END) AS comp_1_avg,
AVG(CASE comp WHEN 0 THEN X.weight END) AS comp_0_avg
FROM
(SELECT
benefit,
weight,
comp
FROM
Segment_Responses AS a
INNER JOIN
Segment_Descriptors AS b ON a.resp_id = b.resp_id) AS X
GROUP BY
X.benefit
uj5u.com熱心網友回復:
是的,試試這個
SELECT
X.benefit,
avg(case when b.comp=0 then X.weight end) AS W,
avg(case when b.comp=1 then X.weight end) AS W1,
FROM (
SELECT
benefit,
weight,
comp
FROM
Segment_Responses AS a
INNER JOIN Segment_Descriptors AS b ON a.resp_id =
b.resp_id
) AS X
GROUP BY
X.benefit
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/343704.html
標籤:sql sql-server 查询语句
上一篇:根據給定日期計算要排除的天數
下一篇:SQL行計數超過磁區
