我有下表作为 SQL 查询的输出
ID Car Type Units Sold
---------------------------
1 Sedan 250
2 SUV 125
3 Total 375
我想要一个 SQL 查询/过程来生成以下输出
ID Car Type Units Sold
--------------------------
1 Sedan 250
2 SUV 125
3 Total 375
4 Sedan_Pct 66.67 (250/375)
5 SUV_Pct 33.33 (125/375)
请注意,汽车类型
将来将会增加,我希望每种汽车类型的百分比应以“_Pct”形式附加到当前表中。
最佳答案
通常,我们可能希望将百分比视为单独的列,而不是单独的行。话虽这么说,我们可以使用 SQL Server 中的分组集生成您想要的输出:
WITH cte AS (
SELECT ID, CarType, SUM (UnitsSold) AS UnitsSold
FROM yourTable
GROUP BY
GROUPING SETS((ID, CarType), (CarType), ())
)
SELECT
ID,
COALECSE(CarType, 'Total') AS CarType,
CASE WHEN ID IS NOT NULL OR CarType IS NULL
THEN UnitsSold
ELSE 100.0 * UnitsSold /
SUM(CASE WHEN ID IS NOT NULL THEN UnitsSold END) OVER () END AS PctUnitsSold
FROM cte
ORDER BY
ID DESC,
CASE WHEN CarType IS NULL THEN 0 ELSE 0 END,
CarType;
Demo
关于SQL Server : percentage calculation with new records as output,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53028556/