[英]In SQL Server, testing a uniqueidentifier for null doesn't seem to work
[英]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.