簡體   English   中英

分組依據似乎不像我預期的那樣工作(SQL Server)

[英]Group By doesn't seem to work as I expected (SQL Server)

我有以下查詢:

SELECT 
    AVG(CAST(RATING AS NUMERIC(18, 2))) AS AVERAGE,
    QUESTIONID,
    COUNT(QUESTIONID) AS COUNT
FROM
    AnswersRating
WHERE 
    SURVEYID IN (SELECT ID
                 FROM SURVEYS
                 WHERE FLIGHTDATAID = 7277)
GROUP BY 
    QUESTIONID;

我得到這個結果:

AVERAGE  QUESTIONID COUNT
-------------------------
3.606060 115        99
4.303030 109        99
2.969696 118        99
3.818181 112        99
2.545454 113        99
3.787878 121        99
3.606060 110        99
2.363636 119        99
3.515151 116        99
3.272727 117        99
4.242424 111        99
3.909090 120        99
2.333333 114        99

這很好,除了QUESTIONID行之外,所有其他項都不是我想要的ID從最低到最高的順序。 我在其他情況正確顯示的航班上進行了完全相同的查詢:

AVERAGE  QUESTIONID COUNT
--------------------------
3.000000 109        1
3.000000 110        1
3.000000 111        1
3.000000 112        1
0.000000 113        1
0.000000 114        1
3.000000 115        1
0.000000 116        1
3.000000 117        1
3.000000 118        1
0.000000 119        1
3.000000 120        1
3.000000 121        1

我究竟做錯了什么?

為什么不使用Order By 分組並不意味着排序。

ORDER BY QUESTIONID;

如果要為結果指定特定順序,則必須指定ORDER BY ,它位於GROUP BY in子句順序之后。 這兩個子句不是互斥的:

SELECT AVG(CAST(RATING AS NUMERIC(18, 2))) AS AVERAGE,
     QUESTIONID,
     COUNT(QUESTIONID) AS COUNT
FROM AnswersRating
WHERE SURVEYID IN
(
   SELECT ID
   FROM SURVEYS
   WHERE FLIGHTDATAID = 7277
)
GROUP BY QUESTIONID
ORDER BY QUESTIONID;

您的第二個查詢純粹是巧合地按順序返回結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM