我正在使用下面的查詢並獲取我想要的結果,我不禁想到,有可能比使用不同的where子句反覆重複該代碼更好的方法?建議?衆多工會,更簡單的方法?
WITH HHSUMMARY
AS
(
SELECT
B.HouseholdId, SUM(B.Balance) AS AUM, SUM(B.TradeRevenue + B.TrailRevenue + B.AdvisoryRevenue) AS Revenue
FROM
BookSegmentation.BookSegmentationDataset B
WHERE
B.RepName = 'Rep'
GROUP BY
B.HouseholdId
)
SELECT
'< 25K' AS [ACCT BALANCE CAT],
COUNT(HouseholdID) AS HH,
CAST(COUNT(HouseholdId) AS DECIMAL(18,2))/(SELECT CAST(COUNT(HouseholdId) AS DECIMAL(18,2)) FROM HHSUMMARY) AS [% HH],
SUM(AUM) AS [HH AUM],
SUM(AUM)/(SELECT SUM(AUM) FROM HHSUMMARY) AS [HH AUM %],
SUM(Revenue) AS REVENUE,
SUM(Revenue)/(SELECT SUM(Revenue) FROM HHSUMMARY) AS [% REV],
SUM(Revenue)/SUM(AUM) AS [EFFICIENCY %]
FROM HHSUMMARY
WHERE AUM < 25000
UNION
SELECT
'25K-50K' AS [ACCT BALANCE CAT],
COUNT(HouseholdID) AS HH,
CAST(COUNT(HouseholdId) AS DECIMAL(18,2))/(SELECT CAST(COUNT(HouseholdId) AS DECIMAL(18,2)) FROM HHSUMMARY) AS [% HH],
SUM(AUM) AS [HH AUM],
SUM(AUM)/(SELECT SUM(AUM) FROM HHSUMMARY) AS [HH AUM %],
SUM(Revenue) AS REVENUE,
SUM(Revenue)/(SELECT SUM(Revenue) FROM HHSUMMARY) AS [% REV],
SUM(Revenue)/SUM(AUM) AS [EFFICIENCY %]
FROM HHSUMMARY
WHERE AUM >= 25000 AND AUM < 50000
UNION
SELECT
'50K-100K' AS [ACCT BALANCE CAT],
COUNT(HouseholdID) AS HH,
CAST(COUNT(HouseholdId) AS DECIMAL(18,2))/(SELECT CAST(COUNT(HouseholdId) AS DECIMAL(18,2)) FROM HHSUMMARY) AS [% HH],
SUM(AUM) AS [HH AUM],
SUM(AUM)/(SELECT SUM(AUM) FROM HHSUMMARY) AS [HH AUM %],
SUM(Revenue) AS REVENUE,
SUM(Revenue)/(SELECT SUM(Revenue) FROM HHSUMMARY) AS [% REV],
SUM(Revenue)/SUM(AUM) AS [EFFICIENCY %]
FROM HHSUMMARY
WHERE AUM >= 50000 AND AUM < 100000
UNION
SELECT
'100K-250K' AS [ACCT BALANCE CAT],
COUNT(HouseholdID) AS HH,
CAST(COUNT(HouseholdId) AS DECIMAL(18,2))/(SELECT CAST(COUNT(HouseholdId) AS DECIMAL(18,2)) FROM HHSUMMARY) AS [% HH],
SUM(AUM) AS [HH AUM],
SUM(AUM)/(SELECT SUM(AUM) FROM HHSUMMARY) AS [HH AUM %],
SUM(Revenue) AS REVENUE,
SUM(Revenue)/(SELECT SUM(Revenue) FROM HHSUMMARY) AS [% REV],
SUM(Revenue)/SUM(AUM) AS [EFFICIENCY %]
FROM HHSUMMARY
WHERE AUM >= 100000 AND AUM < 250000
UNION
SELECT
'250K-500K' AS [ACCT BALANCE CAT],
COUNT(HouseholdID) AS HH,
CAST(COUNT(HouseholdId) AS DECIMAL(18,2))/(SELECT CAST(COUNT(HouseholdId) AS DECIMAL(18,2)) FROM HHSUMMARY) AS [% HH],
SUM(AUM) AS [HH AUM],
SUM(AUM)/(SELECT SUM(AUM) FROM HHSUMMARY) AS [HH AUM %],
SUM(Revenue) AS REVENUE,
SUM(Revenue)/(SELECT SUM(Revenue) FROM HHSUMMARY) AS [% REV],
SUM(Revenue)/SUM(AUM) AS [EFFICIENCY %]
FROM HHSUMMARY
WHERE AUM >= 250000 AND AUM < 500000
UNION
SELECT
'500K-750K' AS [ACCT BALANCE CAT],
COUNT(HouseholdID) AS HH,
CAST(COUNT(HouseholdId) AS DECIMAL(18,2))/(SELECT CAST(COUNT(HouseholdId) AS DECIMAL(18,2)) FROM HHSUMMARY) AS [% HH],
SUM(AUM) AS [HH AUM],
SUM(AUM)/(SELECT SUM(AUM) FROM HHSUMMARY) AS [HH AUM %],
SUM(Revenue) AS REVENUE,
SUM(Revenue)/(SELECT SUM(Revenue) FROM HHSUMMARY) AS [% REV],
SUM(Revenue)/SUM(AUM) AS [EFFICIENCY %]
FROM HHSUMMARY
WHERE AUM >= 500000 AND AUM < 750000
UNION
SELECT
'750K-1MM' AS [ACCT BALANCE CAT],
COUNT(HouseholdID) AS HH,
CAST(COUNT(HouseholdId) AS DECIMAL(18,2))/(SELECT CAST(COUNT(HouseholdId) AS DECIMAL(18,2)) FROM HHSUMMARY) AS [% HH],
SUM(AUM) AS [HH AUM],
SUM(AUM)/(SELECT SUM(AUM) FROM HHSUMMARY) AS [HH AUM %],
SUM(Revenue) AS REVENUE,
SUM(Revenue)/(SELECT SUM(Revenue) FROM HHSUMMARY) AS [% REV],
SUM(Revenue)/SUM(AUM) AS [EFFICIENCY %]
FROM HHSUMMARY
WHERE AUM >= 750000 AND AUM < 1000000
UNION
SELECT
'1MM-5MM' AS [ACCT BALANCE CAT],
COUNT(HouseholdID) AS HH,
CAST(COUNT(HouseholdId) AS DECIMAL(18,2))/(SELECT CAST(COUNT(HouseholdId) AS DECIMAL(18,2)) FROM HHSUMMARY) AS [% HH],
SUM(AUM) AS [HH AUM],
SUM(AUM)/(SELECT SUM(AUM) FROM HHSUMMARY) AS [HH AUM %],
SUM(Revenue) AS REVENUE,
SUM(Revenue)/(SELECT SUM(Revenue) FROM HHSUMMARY) AS [% REV],
SUM(Revenue)/SUM(AUM) AS [EFFICIENCY %]
FROM HHSUMMARY
WHERE AUM >= 1000000 AND AUM < 5000000
UNION
SELECT
'> 5MM' AS [ACCT BALANCE CAT],
COUNT(HouseholdID) AS HH,
CAST(COUNT(HouseholdId) AS DECIMAL(18,2))/(SELECT CAST(COUNT(HouseholdId) AS DECIMAL(18,2)) FROM HHSUMMARY) AS [% HH],
SUM(AUM) AS [HH AUM],
SUM(AUM)/(SELECT SUM(AUM) FROM HHSUMMARY) AS [HH AUM %],
SUM(Revenue) AS REVENUE,
SUM(Revenue)/(SELECT SUM(Revenue) FROM HHSUMMARY) AS [% REV],
SUM(Revenue)/SUM(AUM) AS [EFFICIENCY %]
FROM HHSUMMARY
WHERE AUM >= 5000000
UNION
SELECT
'TOTAL' AS [ACCT BALANCE CAT],
COUNT(HouseholdID) AS HH,
CAST(COUNT(HouseholdId) AS DECIMAL(18,2))/(SELECT CAST(COUNT(HouseholdId) AS DECIMAL(18,2)) FROM HHSUMMARY) AS [% HH],
SUM(AUM) AS [HH AUM],
SUM(AUM)/(SELECT SUM(AUM) FROM HHSUMMARY) AS [HH AUM %],
SUM(Revenue) AS REVENUE,
SUM(Revenue)/(SELECT SUM(Revenue) FROM HHSUMMARY) AS [% REV],
SUM(Revenue)/SUM(AUM) AS [EFFICIENCY %]
FROM HHSUMMARY
這裏是我的結果:
您需要對案例表達式進行「GROUP BY」處理,並且可以使用分組集合或彙總完成總計。 –