oracleクエリ結果のソート、ASC/DESC、昇順、降順、複数列ソート、ORDER BY、いくつかの練習問題
クエリー結果のソート
EMPテーブルの異なる部門番号が表示されます.
クエリとともに結果を並べ替える場合は、次の文を使用します.
ORDER BYは文の後からソートする列に続く.ORDER BY従属文はSELECT文の最後に現れる.
ソートには昇順と降順の区分があり、ASCは昇順ソートを表し、DESCは降順ソートを表す.ソート順を指定しない場合は、
デフォルトのソート順は昇順ASCです.降順にするにはDESCキーを書く必要があります
1.昇順ソート
【訓練1】従業員の名前と給与を調べ、給与の小さい順に並べ替える.
クエリーを入力して実行するには、次の手順に従います.
実行結果:
注意:ASCとDESCを省略すると、デフォルトはASC、すなわち昇順ソートです.
2.降順ソート
【トレーニング2】従業員の名前と雇用日を照会し、雇用日順に並べ替え、雇用の先を表示します.
クエリーを入力して実行するには、次の手順に従います.
結果は次のとおりです.
注意:DESCは降順ソートを表し、省略できません.
3.複数列ソート
複数の列でソートできます.最初の列を押してから、2番目の列、3番目の列......を押します.
【訓練3】従業員情報を照会し、部門別に小から大まで並べ替え、雇用時間の前後順に並べ替える.
クエリーを入力して実行するには、次の手順に従います.
結果は次のとおりです.
説明:このソートは、部門別にソートされ、部門が同じ場合、雇用時間別にソートされます.
4.ソートで別名を使用
計算カラムをソートする場合は、計算カラムの別名を指定し、別名でソートできます.
【訓練4】給与と勤務月の積で並べ替えます.
クエリーを入力して実行するには、次の手順に従います.
実行結果:
sysdateは現在の日付を取得します.
練習問題:
1.SQL言語でデータベース・オブジェクトの作成、削除および変更に使用される部分を以下と呼びます.
A.データベース制御言語(DCL)
B.データベース定義言語(DDL)
C.データベース操作言語(DML)
D.データベース取引言語
2.ヘッダーが次のように表示されるクエリーを実行します.
A. EMPLOYEE SALARY B. employee salary
C. Employee Salary D. "Employee Salary“
3.次の2つのクエリを実行します.結果は次のとおりです.
A.両クエリの結果はまったく同じである
B.2つのクエリの結果が異なる
C.1番目のクエリが正しい、2番目のクエリが間違っている
D.2番目のクエリが正しい、1番目のクエリが間違っている
4.この章のempテーブルの内容を参照して、次のクエリ文を実行します.最初の行に表示される人は次のとおりです.
A. SMITH B. KING
C. MILLER D. CLARK
5.どの関数が||演算と同じ機能を持っているか:
A. LTRIM B. CONCAT
C. SUBSTR D. INSTR
6.次の文を実行すると、正しい結論は次のとおりです.
A.指定日から100日以内に雇用された従業員情報を表示する
B.所定日前100日以内に雇用された従業員情報を表示する
C.所定日から100日後に雇用された従業員情報を表示する
D.所定日より100日前に雇用された従業員情報を表示する
7.次の文でエラーが発生した行は次のとおりです.
A.1行目B.2行目
C.3行目D.4行目
8.次の文でエラーが発生した行は次のとおりです.
A.1行目B.2行目
C.3行目D.4行目
9.次の文でエラーが発生した行は次のとおりです.
A.1行目B.2行目
C.3行目D.4行目
10.次の文でエラーが発生しました.どの変更が正しく実行されますか.
A.WHEREとGROUP BY文を順番に入れ替える
B.WHERE max(sal)>2500文をHAVING max(sal)>2500文に変更
C.WHERE max(sal)>2500文をWHERE sal>2500に変更
D.WHERE max(sal)>2500文をHAVING sal>2500に変更
11.次の文の役割は次のとおりです.
A.給与が1000元未満の従業員情報を表示する
B.従業員の給料が1000元未満の給料を1000元増加した後に表示する
C.最低賃金1000元を超える従業員情報を表示する
D.最低賃金1000元以下の従業員情報を表示する
12.次の文の役割は次のとおりです.
A.部署10の従業員役職と20の従業員役職を表示する
B.表示部門10と部門20の共通の従業員職務
C.表示部門10と部門20の異なる従業員の職務
D.部門10に現れ、部門20に現れない従業員の職務を表示する
黒い髪:http://heisetoufa.iteye.com/
EMPテーブルの異なる部門番号が表示されます.
クエリとともに結果を並べ替える場合は、次の文を使用します.
SELECT FROM WHERE
ORDER BY 1 [ASC|DESC][, 2 [ASC|DESC]...];
ORDER BYは文の後からソートする列に続く.ORDER BY従属文はSELECT文の最後に現れる.
ソートには昇順と降順の区分があり、ASCは昇順ソートを表し、DESCは降順ソートを表す.ソート順を指定しない場合は、
デフォルトのソート順は昇順ASCです.降順にするにはDESCキーを書く必要があります
1.昇順ソート
【訓練1】従業員の名前と給与を調べ、給与の小さい順に並べ替える.
クエリーを入力して実行するには、次の手順に従います.
SELECT ename, sal FROM emp ORDER BY sal;
実行結果:
ENAME SAL
------------- --------------------
SMITH 800
JAMES 950
注意:ASCとDESCを省略すると、デフォルトはASC、すなわち昇順ソートです.
2.降順ソート
【トレーニング2】従業員の名前と雇用日を照会し、雇用日順に並べ替え、雇用の先を表示します.
クエリーを入力して実行するには、次の手順に従います.
SELECT ename,hiredate FROM emp ORDER BY hiredate DESC;
結果は次のとおりです.
ENAME HIREDATE
------------- -----------------------
ADAMS 23-5 -87
SCOTT 19-4 -87
MILLER 23-1 -82
JAMES 03-12 -81
FORD 03-12 -81
注意:DESCは降順ソートを表し、省略できません.
3.複数列ソート
複数の列でソートできます.最初の列を押してから、2番目の列、3番目の列......を押します.
【訓練3】従業員情報を照会し、部門別に小から大まで並べ替え、雇用時間の前後順に並べ替える.
クエリーを入力して実行するには、次の手順に従います.
SELECT ename,deptno,hiredate FROM emp ORDER BY deptno,hiredate;
結果は次のとおりです.
ENAME DEPTNO HIREDATE
---------------- ----------------- ---------------
CLARK 10 09-6 -81
KING 10 17-11 -81
MILLER 10 23-1 -82
SMITH 20 17-12 -80
JONES 20 02-4 -81
FORD 20 03-12 -81
SCOTT 20 19-4 -87
説明:このソートは、部門別にソートされ、部門が同じ場合、雇用時間別にソートされます.
4.ソートで別名を使用
計算カラムをソートする場合は、計算カラムの別名を指定し、別名でソートできます.
【訓練4】給与と勤務月の積で並べ替えます.
クエリーを入力して実行するには、次の手順に従います.
SELECT empno, ename, sal*Months_between(sysdate,hiredate) AS total FROM emp
ORDER BY total;
実行結果:
EMPNO ENAME TOTAL
------------ ------------- ----------------------
7876 ADAMS 221526.006
7369 SMITH 222864.661
7900 JAMES 253680.817
7654 MARTIN 336532.484
sysdateは現在の日付を取得します.
練習問題:
1.SQL言語でデータベース・オブジェクトの作成、削除および変更に使用される部分を以下と呼びます.
A.データベース制御言語(DCL)
B.データベース定義言語(DDL)
C.データベース操作言語(DML)
D.データベース取引言語
2.ヘッダーが次のように表示されるクエリーを実行します.
SELECT sal "Employee Salary" FROM emp
A. EMPLOYEE SALARY B. employee salary
C. Employee Salary D. "Employee Salary“
3.次の2つのクエリを実行します.結果は次のとおりです.
SELECT ename name,sal salary FROM emp order by salary;
SELECT ename name,sal "SALARY" FROM emp order by sal ASC;
A.両クエリの結果はまったく同じである
B.2つのクエリの結果が異なる
C.1番目のクエリが正しい、2番目のクエリが間違っている
D.2番目のクエリが正しい、1番目のクエリが間違っている
4.この章のempテーブルの内容を参照して、次のクエリ文を実行します.最初の行に表示される人は次のとおりです.
SELECT ename FROM emp WHERE deptno=10 ORDER BY sal DESC;
A. SMITH B. KING
C. MILLER D. CLARK
5.どの関数が||演算と同じ機能を持っているか:
A. LTRIM B. CONCAT
C. SUBSTR D. INSTR
6.次の文を実行すると、正しい結論は次のとおりです.
SELECT empno,ename FROM emp WHERE hiredate<to_date('04-11 -1980')-100
A.指定日から100日以内に雇用された従業員情報を表示する
B.所定日前100日以内に雇用された従業員情報を表示する
C.所定日から100日後に雇用された従業員情報を表示する
D.所定日より100日前に雇用された従業員情報を表示する
7.次の文でエラーが発生した行は次のとおりです.
SELECT deptno,max(sal) FROM emp
WHERE job IN('CLERK','SALEMAN','ANALYST')
GROUP BY deptno
HAVING sal>1500;
A.1行目B.2行目
C.3行目D.4行目
8.次の文でエラーが発生した行は次のとおりです.
SELECT deptno,max(avg(sal))
FROM emp
WHERE sal>1000
Group by deptno;
A.1行目B.2行目
C.3行目D.4行目
9.次の文でエラーが発生した行は次のとおりです.
SELECT deptno,dname,ename,sal
FROM emp,dept
WHERE emp.deptno=dept.deptno
AND sal>1000;
A.1行目B.2行目
C.3行目D.4行目
10.次の文でエラーが発生しました.どの変更が正しく実行されますか.
SELECT deptno, max(sal)
FROM emp
GROUP BY deptno
WHERE max(sal)>2500;
A.WHEREとGROUP BY文を順番に入れ替える
B.WHERE max(sal)>2500文をHAVING max(sal)>2500文に変更
C.WHERE max(sal)>2500文をWHERE sal>2500に変更
D.WHERE max(sal)>2500文をHAVING sal>2500に変更
11.次の文の役割は次のとおりです.
SELECT ename,sal FROM emp
WHERE sal<(SELECT min(sal) FROM emp)+1000;
A.給与が1000元未満の従業員情報を表示する
B.従業員の給料が1000元未満の給料を1000元増加した後に表示する
C.最低賃金1000元を超える従業員情報を表示する
D.最低賃金1000元以下の従業員情報を表示する
12.次の文の役割は次のとおりです.
SELECT job FROM emp WHERE deptno=10
MINUS
SELECT job FROM emp WHERE deptno=20;
A.部署10の従業員役職と20の従業員役職を表示する
B.表示部門10と部門20の共通の従業員職務
C.表示部門10と部門20の異なる従業員の職務
D.部門10に現れ、部門20に現れない従業員の職務を表示する
黒い髪:http://heisetoufa.iteye.com/