【发布时间】:2018-09-14 23:23:05
【问题描述】:
我有以下 SQL 查询,我想重构它。我对 SQL 很陌生,但我学到了一些我不应该在查询中重复做的事情。
SELECT id,
(SELECT COUNT(*) FROM Table_1
WHERE T3.Id = randomID) AS 'Column One Count',
(SELECT COUNT(*) FROM Table_2
WHERE T3.Id = randomID) AS 'Column Two Count',
((SELECT COUNT(*) FROM Table_2
WHERE T3.Id = randomID) /
(SELECT COUNT(*) FROM Table_1
WHERE T3.Id = randomID)) * 100 AS 'Column Three Percentage'
FROM Table_3 T3
有人建议我不要经常使用 SELECT *,所以我将每次出现的地方都替换为:
SELECT COUNT(randomID)
这给了我同样的结果。我仍然认为我可以将重复的元素组合成一个更简洁的查询,但是我的 SQL 水平还不够好。
有哪些方法可以重构此代码以避免重复类似查询?
【问题讨论】:
-
table1 和 table2 中还有列吗?
-
或者您能提供一些示例数据并期待结果吗?
标签: sql sql-server azure