[英]SQL Server use Different Group By and Order By Columns with Sub-query
我正在嘗試僅通過使用分組集的查詢顯示分組中的某些列。 我也想僅按某些其他列進行排序。
為此,我使用了子查詢。
我有兩個問題:
有沒有更好的方法來對差異列進行分組和排序?
通過這種方式使用子查詢是否存在性能問題?
查詢:
SELECT Region, State, Sales FROM (
SELECT RegionID, Region, StateID, State, SUM(Sales) AS Sales
FROM Sales
GROUP BY
GROUPING SETS(
(RegionId, Region, StateID, State),
(StateId, State),
()
)
) As T1
ORDER BY RegionID, StateID
之所以要這樣做,是因為我想按與分組依據不同的列進行排序。 但是由於我使用的是按查詢分組,因此必須使用所有列。
您的查詢很好。 但是,我認為您不需要子查詢:
SELECT Region, State, SUM(Sales) AS Sales
FROM Sales
GROUP BY GROUPING SETS( (Region, State), (State), () )
ORDER BY MAX(RegionID), MAX(StateID);
您可以僅在ID上使用聚合函數以進行訂購。
注意,子查詢的性能損失很小。 我能想到的唯一問題是聚合密鑰稍長一些,因此性能損失可能很小。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.