2

という名前のテーブルを作成し、HOSTEL(hostel_num NUMBER, num_of_stud NUMBER)値を次のように挿入しました。

-------------------------- 
hostel_num | num_of_stud  |
--------------------------
1001       |    124       |
1001       |    234       |
1002       |     97       |
1002       |    134       |
1003       |    234       |
1004       |    123       |
1004       |     89       |
1001       |     67       |
--------------------------

GROUP BYコマンドを次のように適用した場合:

SELECT hostel_num, sum(num_of_stud) as total_students 
FROM HOSTELS 
GROUP BY hostel_num;

、そして私は次のような結果を得ました:

-----------------------------
hotel_num   | total_students |
-----------------------------
1003        |      234       |
1001        |      425       |
1002        |      231       |
1004        |      212       |
-----------------------------

さて、私の質問は: なぜhostel_num 1003トップになったのですか? 行番号 3 に来るべきではありませんか? この種の注文の背後にあるロジックは何ですか?

私は知っています、そのGROUP BY句は反復的な列の値を統合し、それらをグループ化します。

私の疑問は次のとおりです。ここのように、これらの値を表示する順序をどのように決定するか、次のような出力を期待していました:

-----------------------------
hotel_num   | total_students |
-----------------------------
1001        |      425       |
1002        |      231       |
1003        |      234       |
1004        |      212       |
-----------------------------
4

4 に答える 4

3

がなければ、ORDER BY順序は保証されません:

SELECT hostel_num, sum(num_of_stud) as total_students 
FROM HOSTELS 
GROUP BY hostel_num
ORDER BY hostel_num;
于 2013-08-04T08:54:48.627 に答える
0

使いたいOrder By

SELECT  hostel_num ,
        SUM(num_of_stud) AS total_students
FROM    HOSTELS
GROUP BY hostel_num
ORDER BY hostel_num

並べ替えの説明を参照してください。

編集:ここにあなたが見ているものに対する非常に良い答えがあります。これも見てください。

于 2013-08-04T08:55:25.797 に答える