我正在使用下面的查询并获取我想要的结果,我不禁想到,有可能比使用不同的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”处理,并且可以使用分组集合或汇总完成总计。 –