sql - 来自两个查询的 SQL 百分比
问题描述
目前我有一个存储过程,可以获取映射的数据量和总计(在两列中),但我正在努力添加带有百分比的第三列。
SET NOCOUNT ON
-- Insert statements for procedure here
SELECT
(SELECT SUM(Length) / 1000
FROM [dbo].[map_cache_main]
WHERE Gradient IS NOT NULL
AND TRID >= 1000 AND TRID < 3300) AS Mapped,
(SELECT SUM(Length) / 1000
FROM [dbo].[map_cache_main]
WHERE TRID >= 1000 AND TRID < 3300) AS Total
电流输出:
21681.8478879079, 31293.9302964378
期望的输出:
21681.8478879079, 31293.9302964378, 69.28%
解决方案
在一个查询中完成所有操作:
SELECT SUM(CASE WHEN Gradient IS NOT NULL THEN Length END) / 1000 as Mapped,
SUM(Length) / 1000 as Total,
(SUM(CASE WHEN Gradient IS NOT NULL THEN Length END) * 100.0
SUM(Length)
) as percentage
FROM [dbo].[map_cache_main]
WHERE TRID >= 1000 AND TRID < 3300;
我不明白为什么你们都要把这个逻辑包装在一个存储过程中。函数或视图也是合适的。
推荐阅读
- hybris - 在具有 CMS 限制的 Spartacus 中隐藏类别导航节点
- firebase - Firebase:嵌套 onSnapshot 返回“未定义不是函数”错误
- c# - Azure 搜索 - 排序时对口音不敏感的分析器不起作用
- react-hooks - 当我需要进行大量计算时优化代码反应
- python - Discord.py - 扫描所有嵌入字段以查找特定短语
- reactjs - 反应本机headerShown:false不起作用
- django - 无法覆盖 drf 嵌套序列化程序 CREATE
- windows - 具有自定义配置参数的 Windows Server RDRemoteApp
- go - 如何链接html
- javascript - 在 Mozilla Firefox for Google Apps 脚本中显示 NS 绑定中止