我有以下查詢:集團通過似乎不工作,我預計(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 questionid'。排序結果不是「group by」的工作。 –
但是我不能使用'ORDER BY':'Column'AnswersRating.QUESTIONID'在選擇列表中是無效的,因爲它不包含在聚合函數或GROUP BY子句中。' – OmniOwl
'ORDER BY QUESTIONID' – Squirrel