グループ関数の使用質問
1. Which of the following is NOT a GROUP BY function?
- MAX
- MIN
- NVL
- AVG
Answer: C. NVLは、NULL値に代替値を提供するために使用される一般的な関数です。関数MAX、MIN、およびAVGは、GROUPBY関数として使用できます。
2. Which of the following functions can be used without GROUP BY clause in SELECT query?
- COUNT
- MAX
- MIN
- AVG
Answer: A, B, C, D. SELECTクエリで他の列が選択されていない限り、リストされているすべてのグループ関数をクエリで使用できます。
3. Which of the following SELECT query returns the department number with maximum salary compensated to an employee? (Consider the table structure as given)
SQL> DESC employees
Name Null? Type
----------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
SELECT department_id , max(salary ) FROM employees ;
SELECT department_id , max(salary ) FROM employees GROUP BY department_id ;
SELECT max(salary ) FROM employees GROUP BY department_id ;
SELECT max(salary ) FROM employees ;
Answer: B. MAX関数を使用して、各グループが部門によって形成されている部門の最大給与を返すことができます。
4. Which of the following statements are true about the COUNT function?
- COUNT関数は行数をカウントします
- COUNT(*)関数は、重複してNULL値を持つ行の数をカウントします
- COUNT(DISTINCT)関数は、個別の行の数をカウントします
- COUNT(*)はCOUNT(ALL)と同等です
Answer: B. COUNT(*)は、重複とNULLを含む行の数をカウントします。DISTINCTおよびALLキーワードを使用して、重複値とNULL値を制限します。
5. What are the appropriate data types accepted by GROUP BY functions?
- ネストされたテーブル
- NUMBER
- CLOB
- DATE
Answer: B. 引数を持つ関数のデータ型は、CHAR、VARCHAR2、NUMBER、またはDATEです。
6. A table T_COUNT has 12 number values as 1, 2, 3, 32, 1, 1, null, 24, 12, null, 32, null. Predict the output of the below query.
SELECT COUNT (*) FROM t_count;
- 12
- 6
- 9
- COUNT関数がNULL値で機能しないため、例外をスローします
Answer: A. COUNT(*)は、重複とNULLを含む行の数をカウントします。DISTINCTおよびALLキーワードを使用して、重複値とNULL値を制限します。
7. A table T_COUNT has 12 number values as 1, 2, 3, 32, 1, 1, null, 24, 12, null, 32, null. Predict the output of the below query.
SELECT COUNT (num) FROM t_count;
- 12
- 6
- 9
- COUNT関数がNULL値で機能しないため、例外をスローします
Answer: C. COUNT(列)はNULL値を無視しますが、重複をカウントします。
8. A table T_COUNT has 12 number values as 1, 2, 3, 32, 1, 1, null, 24, 12, null, 32, null. Predict the output of the below query.
SELECT COUNT (ALL num) FROM t_count;
- 12
- 6
- 9
- COUNT関数がNULL値で機能しないため、例外をスローします
Answer: C. COUNT(ALL列)はNULL値を無視しますが、重複をカウントします。
9. A table T_COUNT has 12 number values as 1, 2, 3, 32, 1, 1, null, 24, 12, null, 32, null. Predict the output of the below query.
SELECT COUNT (DISTINCT num) FROM t_count;
- 12
- 6
- 9
- COUNT関数がNULL値で機能しないため、例外をスローします
Answer: B. COUNT(DISTINCT列)は、null以外の個別の値をカウントします。
10. What happens when the below query is executed in SQL* Plus?
SELECT COUNT() FROM dual;
- 正常に実行され、出力を返しません
- 正常に実行され、出力を「1」として返します
- 例外「ORA-00909:引数の数が無効です」をスローします
- COUNT関数がDUALテーブルで機能しないため、例外「ORA-00904:「COUNT」:無効な識別子」をスローします
Answer: C. COUNT関数には、少なくとも1つの引数が必要です。これは、[ALL | DISTINCT]修飾子または「*」。
11. Here are few statements about VARIANCE function in SQL.
私。この関数は複数の数値入力を受け入れ、すべての値の分散を返します
ii。この関数は数値列を受け入れ、NULLを含むすべての列値の分散を返します
iii。この関数は数値列を受け入れ、NULLを除くすべての列値の分散を返します
以下のオプションから正しい組み合わせを選択してください。- iとiii
- iとii
- ii
- iii
Answer: C. VARIANCE関数は、列名として単一の数値引数を受け入れ、NULLを考慮したすべての列値の分散を返します。
12. Which of the following is NOT a GROUP BY extensions in SQL?
- GROUP BY
- グループ化セット
- CUBE
- ROLLUP
Answer: A. GROUPING SETS操作を使用して、1つのクエリで複数のGROUPBY集計を実行できます。
13. Select the correct statements about the below query. Consider the table structure as given.
SQL> DESC employees
Name Null? Type
----------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
SELECT department_id , SUM(salary )
FROM employees
GROUP BY department_id ;
- SUMは、部門で働く従業員のグループを処理するため、機能ごとのグループです。
- SUMは、データのグループごとに1つの結果を生成するため、集計関数です。
- SUMは、グループ、つまり部門に対して単一の値を返すため、単一行の関数です。
- SUMは、GROUP BY句を使用して部門を論理的にグループ化するため、groupby拡張関数です。
Answer: A. SUMは、部門で働く従業員のグループの給与の合計を計算するグループ関数です。
14. Which clause is used to filter the query output based on aggregated results using a group by function?
- WHERE
- LIMIT
- グループの場所
- HAVING
Answer: D. HAVING句は、グループの結果を制限するために使用されます。HAVING句を使用して、表示するグループを指定します。これにより、集計情報に基づいてグループをさらに制限します。HAVING句はGROUPBY句の前に置くことができますが、より論理的であるため、GROUPBY句を最初に配置することをお勧めします。SELECTリスト内のグループにHAVING句が適用される前に、グループが形成され、グループ関数が計算されます。
15. Examine the given table structure and predict the outcome of the following query.
SQL> DESC employees
Name Null? Type
----------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
SELECT count(*)
FROM employees
WHERE comm = NULL;
- クエリは、コミッションのない従業員の数を返します
- NULL値の検索時に等号を使用できないため、クエリはエラーをスローします
- クエリは、コミッションがNULL値である部門の従業員数を返します
- クエリにGROUPBY句がないため、クエリはエラーをスローします
Answer: B. WHERE条件を使用してNULLを除外することは、クエリにNULLを無視するように指示する方法です。しかし、ここではISNULL演算子の使用法は間違っています。条件は「WHEREcommISNULL」である必要があります。
16. Which of the following statements is true about the group functions?
- MIN関数は、数値データでのみ使用できます。
- MAX関数は、日付値でのみ使用できます。
- AVG関数は、数値データでのみ使用できます。
- SUM関数をネストされた関数の一部にすることはできません。
Answer: C. AVG関数は、数値でのみ使用できます。このような制限がある他の関数は、SUM、STDDEV、およびVARIANCEです。
17. Which of the following is a valid SELECT statement?
SELECT AVG(retail-cost) FROM books GROUP BY category;
SELECT category, AVG(retail-cost) FROM books;
SELECT category, AVG(retail-cost) FROM books WHERE AVG(retail-cost) > 8.56 GROUP BY category;
SELECT category, AVG(retail-cost) Profit FROM books GROUP BY category HAVING profit > 8.56;
Answer: A. 列エイリアスは、GROUPBY句またはHAVING句では使用できません。
18. Which of the following statements is correct?
- WHERE句には、関数がSELECT句にもリストされていない場合にのみ、グループ関数を含めることができます。
- グループ関数は、SELECT、FROM、またはWHERE句では使用できません。
- HAVING句は常にWHERE句の前に処理されます。
- GROUP BY句は、常にHAVING句の前に処理されます。
Answer: D. HAVING句がGROUPBY句の前にある場合、Oracleはエラーを発生させませんが、GROUP BY句が処理され、グループをフィルタリングする準備ができた後にのみ処理されます。
19. Which of the following is not a valid SQL statement?
SELECT MIN(pubdate) FROM books GROUP BY category HAVING pubid = 4;
SELECT MIN(pubdate) FROM books WHERE category = 'COOKING';
SELECT COUNT(*) FROM orders WHERE customer# = 1005;
SELECT MAX(COUNT(customer#)) FROM orders GROUP BY customer#;
Answer: A.
20. Which of the following statements is correct?
- COUNT関数を使用して、NULL値を含む行の数を判別できます。
- ALLキーワードがSELECT句に含まれていない限り、グループ関数には個別の値のみが含まれます。
- WHERE句は、処理される行を制限します。
- HAVING句は、クエリ結果に表示されるグループを決定します。
Answer: C, D. WHERE句は、グループ化および処理される前に行を制限しますが、HAVING句はグループを制限します。
21. Which of the following is a valid SQL statement?
SELECT customer#, order#, MAX(shipdate-orderdate) FROM orders GROUP BY customer# WHERE customer# = 1001;
SELECT customer#, COUNT(order#) FROM orders GROUP BY customer#;
SELECT customer#, COUNT(order#) FROM orders GROUP BY COUNT(order#);
SELECT customer#, COUNT(order#) FROM orders GROUP BY order#;
Answer: B. GROUP BY句には、グループ関数内で使用される列を除くすべての列が含まれている必要があります。
22. Which of the following SELECT statements lists only the book with the largest profit?
SELECT title, MAX(retail-cost) FROM books GROUP BY title;
SELECT title, MAX(retail-cost) FROM books GROUP BY title HAVING MAX(retail-cost);
SELECT title, MAX(retail-cost) FROM books;
- 上記のどれでもない
Answer: A.
23. Which of the following statement(s) is/are correct?
1.グループ関数は、グループ関数内にネストできます。
2.グループ関数は、単一行の関数内にネストできます。
3.単一行の関数は、グループ関数内にネストできます。
- 1
- 2
- 3
- 1と3
Answer: A, B, C. グループ関数は、2つの深さまでのみネストできます。グループ関数は、単一行関数(TO_CHAR関数に埋め込まれたAVG)内にネストできます。さらに、単一行の関数をグループ関数内にネストできます。
24. Which of the following functions is used to calculate the total value stored in a specified column?
- COUNT
- ADD
- TOTAL
- SUM
Answer: D. SUM関数は、数値の加算を取得するために使用されます。
25. Which of the following SELECT statements lists the highest retail price of all books in the Family category?
SELECT MAX(retail) FROM books WHERE category = 'FAMILY';
SELECT MAX(retail) FROM books HAVING category = 'FAMILY';
SELECT retail FROM books WHERE category = 'FAMILY' HAVING MAX(retail);
- 上記のどれでもない
Answer: A. グループ化する前にカテゴリFAMILYを制限する必要があるため、テーブルの行はHAVING句ではなくWHERE句を使用してフィルタリングする必要があります。
26. Which of the following functions can be used to include NULL values in calculations?
- SUM
- NVL
- MAX
- MIN
Answer: B.NVLは、NULL値の代替値を提供する一般的な関数です。これは、AVG、STDDEV、およびVARIANCEグループ関数を使用した算術計算に実際に違いをもたらす可能性があります。
27. Which of the following is not a valid statement?
- 重複するすべての値を含めるには、グループ関数にALLキーワードを入力する必要があります。
- AVG関数を使用して、2つの日付間の計算された平均差を見つけることができます。
- MIN関数とMAX関数は、VARCHAR2列で使用できます。
- 上記のすべて
Answer: A. ALLキーワードは重複をカウントしますが、NULLを無視します。重複は、「*」および列名の指定にも含まれます。
28. Which of the following SQL statements determines how many total customers were referred by other customers?
SELECT customer#, SUM(referred) FROM customers GROUP BY customer#;
SELECT COUNT(referred) FROM customers;
SELECT COUNT(*) FROM customers;
SELECT COUNT(*) FROM customers WHERE referred IS NULL;
Answer: B. すべての顧客を1つのグループと見なすと、COUNT(referred)は、誰かから紹介された顧客のみをカウントします。COUNT(referred)は、列のNULL値を無視します。
29. Determine the correct order of execution of following clauses in a SELECT statement.
1.SELECT
2.FROM
3.どこで
4.GROUP BY
5.持っている
6.注文者
- 2-3-4-5-1-6
- 1-2-3-4-5-6
- 6-5-4-3-2-1
- 5-4-2-3-1-6
Answer: A. 処理順序は、FROM句から始まり、テーブル名を取得し、WHERE句を使用して行を制限し、GROUP BY句を使用して行をグループ化し、HAVING句を使用してグループを制限します。ORDER BY句は、最終的なデータセットを並べ替えるために処理される最後の句です。
30. Which of the below clauses is used to group a set of rows based on a column or set of columns?
- HAVING
- WHERE
- GROUP BY
- GROUPING
Answer: C. GROUP BY句は、指定された列リストに基づいてデータのグループを形成します。
31. Which of the following group functions can be used for population variance and population standard deviation problems?
- VAR_POP
- STDDEV_POP
- VARIANCE
- STDDEV_SASMP
Answer: A, B.
32. Select the positions in a SELECT query where a group function can appear.
- SELECTステートメント
- WHERE句
- ORDERBY句
- GROUPBY句
Answer: A, C, D. グループ関数は、SELECT、ORDER BY、およびHAVING句に表示できます。グループ関数がWHERE句またはGROUPBY句で使用されている場合、Oracleは例外を発生させます。
33. Examine the structure of the EMPLOYEES table as given. Which query will return the minimum salary in each department?
SQL> DESC employees
Name Null? Type
----------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
SELECT department_id , MIN (salary ) from EMPLOYEES ;
SELECT department_id , MIN (salary ) from EMPLOYEES GROUP BY department_id ;
SELECT department_id , MIN (salary ) from EMPLOYEES GROUP BY salary ;
SELECT department_id , MIN (salary ) from EMPLOYEES GROUP BY employee_id ;
Answer: B. MIN関数は、部門によって形成されたグループの最低賃金を返します。
34. Examine the structure for the table EMPLOYEES and Interpret the output of the below query
SQL> DESC employees
Name Null? Type
----------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
SELECT COUNT(*), COUNT(all comm) FROM employees ;
- クエリで使用できる集計関数は1つだけなので、エラーがスローされます。
- GROUP BY句がないため、エラーがスローされます。
- 正常に実行され、両方に同じ値が返されます。
- NULLを含むCOUNT(*)およびNULLを除くCOUNT(すべての通信)で正常に実行されます。
Answer: D.
35. Which of the following are true about group functions?
- SELECTステートメントの任意の句でグループ関数を使用できます。
- グループ関数は、select句の列リストとSELECTステートメントのWHERE句でのみ使用できます。
- 単一行の列をグループ化することにより、SELECTステートメントの列リストで単一行の列とグループ関数を混在させることができます。
- 列名、式、定数、または関数をパラメーターとしてグループ関数に渡すことができます。
Answer: C. グループ関数は、2つの深さまでのみネストできます。グループ関数は、単一行関数(TO_CHAR関数に埋め込まれたAVG)内にネストできます。さらに、単一行の関数をグループ関数内にネストできます。
36. Examine the structure of the table EMPLOYEES as given. You want to create a "emp_dept_sales" view by executing the following SQL statements.
SQL> DESC employees
Name Null? Type
----------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
CREATE VIEW emp_dept_sales
AS
SELECT d.department_name , sum(e.salary )
FROM employees e, departments d
where e.department_id =d.department_id
GROUP by d.department_name ;
上記のステートメントの実行に関して正しいステートメントはどれですか?
- ビューが作成され、ビューに対してDLM操作を実行できます。
- 結合ステートメントはビューの作成を許可されていないため、ビューは作成されません
- GROUP BY句でビューを作成できないため、ビューは作成されません。
- ビューは作成されますが、ビューでのDML操作は許可されません
Answer: D. ビューでDML操作を実行するためのルール。ビューにグループ関数、GROUP BY句、またはDISTINCTキーワードが含まれている場合、ビューを介してデータを追加することはできません。疑似列ROWNUMキーワードビューによって選択されていないベーステーブルの式NOTNULL列によって定義された列。
37. Which of the following statements are true regarding views?
- ビューを定義するサブクエリにGROUPBY句を含めることはできません
- DISTINCTキーワードを持つサブクエリでビューが作成され、更新できます
- データ操作言語(DML)操作は、テーブルのすべてのNOTNULL列を持つサブクエリで作成されたビューで実行できます。
- 疑似列ROWNUMキーワードを持つサブクエリで作成されたビューは更新できません
Answer: C, D. ビューでDML操作を実行するためのルール。ビューにグループ関数、GROUP BY句、またはDISTINCTキーワードが含まれている場合、ビューを介してデータを追加することはできません。疑似列ROWNUMキーワードビューによって選択されていないベーステーブルの式NOTNULL列によって定義された列。
38. Examine the table structure as given.
SQL> DESC departments
Name Null? Type
----------------------- -------- ----------------
DEPARTMENT_ID NOT NULL NUMBER(4)
DEPARTMENT_NAME NOT NULL VARCHAR2(30)
MANAGER_ID NUMBER(6)
LOCATION_ID NUMBER(4)
以下のSQLクエリのどの句がエラーを生成しますか?
SELECT department_id , avg(salary )
FROM departments
WHERE upper(job) in ('SALES','CLERK')
GROUP BY job
ORDER BY department_id ;
- WHERE
- SELECT
- ORDER BY
- GROUP BY
Answer: D. GROUP BY句には、SELECTステートメントに表示されるすべての列が含まれている必要があります。JOBが選択された列ではないため、エラーが発生します。JOBの代わりにDEPARTMENT_IDを使用する必要がありました。
39. Examine the table structure as given.
SQL> DESC employees
Name Null? Type
----------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
次のSELECTクエリのどれが、各職種によって獲得した最大および最小の給与を表示しますか?
SELECT job, MAX(salary ), MIN (salary ) FROM employees GROUP BY department_id ;
SELECT job, MAX(salary ), MIN (salary ) FROM employees GROUP BY job;
SELECT job, MAX(salary ), MIN (salary ) FROM employees ;
- SELECTステートメントで2つの集計関数を一緒に使用することはできません。
Answer: B. SELECTステートメントには複数のグループ関数を含めることができます。
40. Consider the table structure as given.
SQL> DESC employees
Name Null? Type
----------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
以下のクエリのエラーを調べてください。
SELECT department_id
FROM employees
WHERE hiredate > '01-JAN-1985'
AND COUNT(*) > 2
GROUP by department_id
HAVING SUM (salary ) > 1000;
- 正常に実行され、必要な結果が生成されます。
- SELECT句でもCOUNT(*)を指定する必要があるため、エラーが発生します。
- 正常に実行されますが、COUNT(*)の代わりにCOUNT(prod_id)を使用する必要があるため、結果は生成されません。
- COUNT(*)はHAVING句にのみ存在し、WHERE句には存在しないため、エラーが発生します。
Answer: D. グループ関数はWHERE句では使用できません。は、SELECT、HAVING、およびORDERBY句に表示されます。
41. Examine the table structure as given.
SQL> DESC employees
Name Null? Type
----------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
以下のクエリの結果を予測します
SELECT job, COUNT(employee_id ),sum(salary )
FROM employees
GROUP BY job
HAVING SUM (salary ) > 5000;
- 正常に実行され、各職種の下の従業員数が一覧表示されますが、「salary」がGROUP BY句に含まれていないため、HAVING句は無視されます。
- HAVING句が無効であるため、エラーがスローされます。
- 「salary」がGROUPBY句に含まれていないため、エラーがスローされます。
- 正常に実行され、給与の合計が5000を超える各カテゴリの従業員の数が一覧表示されます。
Answer: D. HAVING句は、グループの結果を制限します。COUNT関数はカウントに使用され、SUMは数値の加算に使用されます。
42. What is true of using group functions on columns that contain NULL values?
- 列のグループ関数はNULL値を無視します。
- 日付を返す列のグループ関数には、NULL値が含まれます。
- 数値を返す列のグループ関数には、NULL値が含まれます。
- 列のグループ関数は、NULL値を含む列では正確に使用できません。
Answer: A. COUNT関数を除いて、すべてのグループ関数はNULL値を無視します。
43. Which of the following statetments are true about the usage of GROUP BY columns in a subquery?
- サブクエリには、GROUPBY句とORDERBY句を含めることができます。
- サブクエリにGROUPBY句とORDERBY句を含めることはできません。
- サブクエリにはORDERBYを含めることができますが、GROUPBY句を含めることはできません。
- サブクエリにORDERBYを含めることはできませんが、GROUPBY句を含めることができます。
Answer: A. プライマリクエリと同様に、サブクエリにはGROUPBY句とORDERBY句を含めることができます。
Examine the table structure as given and answer the questions 44 to 49 that follow.
SQL> DESC employees
Name Null? Type
----------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
44. Predict the outcome of the below query
SELECT avg(max(salary ))
FROM employees
GROUP BY department_id
HAVING avg(max(salary ))>100;
- 正常に実行されます。
- HAVING句が無効であるため、エラーが発生します。
- GROUP BY式が無効であるため、エラーが発生します。
- SELECTステートメントで集計関数をネストできないため、エラーが発生します。
Answer: B. HAVING句では、集計関数をネストできません。
45. Predict the output of the below query
SELECT avg(salary ), department_id
FROM employees
GROUP BY department_id ;
- SELECT句の直後に集計関数を表示できないため、エラーが発生します。
- GROUP BY句が無効であるため、エラーが発生します。
- エラーなしで実行されますが、出力は生成されません。
- 正常に実行され、各部門の平均給与が得られます。
Answer: D. グループ関数は、SELECTクエリで任意の順序(列によるグループ化の前後)で使用できます。
46. Predict the output of the below query
SELECT lower(job),avg(salary )
FROM employees
GROUP BY upper(job);
- 正常に実行され、「ジョブ」が小文字で表示されます。
- 正常に実行されますが、元のケースでは「ジョブ」が表示されます。
- 単一行関数と集計関数を一緒に使用できないため、エラーがスローされます。
- SELECTリストの大文字と小文字の変換が大文字と小文字の変換のGROUPBY句と一致しないため、エラーがスローされます。
Answer: D. EMPLOYEESデータのグループ化の基礎となるように、単一行関数である関数LOWERをGROUPBY句で指定する必要があります。
47. Which of the below query executes successfully?
SELECT employee_id , COUNT(hiredate-sysdate) FROM employees ;
SELECT AVG(salary ), MAX(salary ) FROM employees ;
SELECT AVG(salary ), MAX(salary ) FROM employees GROUP BY department_id ;
SELECT AVG(hiredate) FROM employees ;
Answer: B, C. 最初のクエリはEMPLOYEESデータ全体を処理し、2番目のクエリは部門のグループでデータを処理します。
48. Identify the error in the below SELECT statement.
SELECT department_id , AVG (salary )
FROM employees
GROUP BY department_id
HAVING department_id > 10;
- 正常に実行され、10を超える部門の平均給与が表示されます。
- 非集約列はHAVING句で使用できないため、エラーがスローされます。
- 正常に実行されますが、部門に対して誤った結果が表示されます。
- HAVING句をGROUPBY句の前に配置する必要があるため、エラーがスローされます。
Answer: A. GROUP BY式をHAVING句で使用して、最終的なデータセットからグループを除外できます。
49. Predict the output of the below query
SELECT department_id , AVG (salary )
FROM employees
GROUP BY department_id
HAVING (department_id >10 and AVG(salary )>2000);
- HAVING句で複数の条件を指定できないため、エラーがスローされます。
- 非集計列はHAVING句で使用できないため、エラーがスローされます。
- 正常に実行され、部門の平均給与が10より高く2000より高く表示されます。
- 正常に実行されますが、結果は表示されません。
Answer: C. HAVING句は、ANDまたはOR演算子を使用して結合された複数の条件をグループに適用できます。
50. Which of the following group functions can be used with DATE values?
- AVG
- MIN
- SUM
- COUNT
Answer: B, D. グループ関数AVGおよびSUMは、数値データでのみ使用できます。
51. Which of the following statements are true?
- AVGおよびSUMは、数値データ型でのみ使用できます。
- STDDEVおよびVARIANCEは、数値データ型でのみ使用できます。
- MAXはLONGデータ型で使用できます。
- MAXおよびMINは、LOBまたはLONGデータ型では使用できません。
Answer: A, B, D. グループ関数AVG、SUM、VARIANCE、およびSTDDEVは、数値データでのみ使用できます。どのグループ関数もLONGデータ型では使用できません。
52. Examine the table structure as given.
SQL> DESC employees
Name Null? Type
----------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
以下のクエリでエラーを特定します。
SELECT department_id , avg(salary ), count(hiredate)
FROM employees
GROUP BY department_id ;
- 1つのSELECTクエリで複数の集計関数を使用することはできません
- GROUPBY句が無効です
- COUNT関数はDATE値では使用できません
- エラーはなく、正常に実行されます
Answer: D.
53. Which of the following group function can be used with LOB data types?
- MAX
- MIN
- COUNT
- どれでもない
Answer: D. LOBデータ型では集計関数を使用できません。
54. Examine the table structure as given.
SQL> DESC employees
Name Null? Type
----------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
以下の2つのクエリの出力を予測します
Query - 1
SELECT avg(comm)
FROM employees ;
Query - 2
SELECT avg(nvl(comm,0))
FROM employees ;
- 両方のクエリで同じ結果が生成されます
- Query-1はCOMMのNULL値を考慮し、Query-2はCOMMのNULL値をゼロに置き換えるため、Query-1とQuery-2は異なる結果を生成します。
- COMMにNULL値があるため、クエリ-1はエラーを生成します
- NVLは集計関数でネストできないため、クエリ-2はエラーを生成します。
Answer: B. AVG関数は、数値データの平均を計算するときにNULL値を無視します。AVG(column)は、null以外の値の平均のみを計算します。ただし、NVLを使用してNULLをゼロに置き換える場合は、すべての値が考慮されます。
55. Choose the correct statements about the GROUP BY clause.
- 列エイリアスは、GROUPBY句で使用できます。
- GROUPBY列はSELECT句に含まれている必要があります。
- GROUP BY句は、HAVING句と一緒にSELECTクエリを指定する必要があります。
- GROUP BY句は、SELECTクエリのWHERE句の後に表示する必要があります。
Answer: D. 処理シーケンスに従って、SELECTクエリのWHERE句の後にGROUPBY句を指定する必要があります。
56. Examine the table structure as given.
SQL> DESC employees
Name Null? Type
----------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
以下のクエリの結果を予測します
SELECT department_id ,avg(salary )
FROM employees
GROUP BY department_id , job
ORDER BY department_id ;
- GROUP BY列リストがSELECT列リストと一致しないため、エラーがスローされます。
- 正常に実行され、各部門の職種の平均給与が生成されます。
- 正常に実行され、各職種の部門の平均給与が生成されます。
- GROUPBY句とORDERBY句の列のリストが異なるため、エラーがスローされます。
Answer: B. GROUP BY句は暗黙的にグループを並べ替えますが、GROUPBY句とORDERBY句はクエリで一緒に使用できます。
57. Which clause should you use to exclude group results in a query using group functions?
- WHERE
- HAVING
- GROUP BY
- ORDER BY
Answer: B. HAVING句は、グループを制限するために使用されます。
Examine the table structure as given and answer the questions 58 and 59 that follow.
SQL> DESC employees
Name Null? Type
----------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
58. Predict the outcome of the below query
SELECT department_id ,avg(salary )
FROM employees
HAVING avg(salary )>2000
GROUP BY department_id
ORDER BY department_id
- 正常に実行されます。
- HAVING句がGROUPBY句の前にあるため、エラーがスローされます。
- HAVING句は集計関数を使用しているため、エラーがスローされます。
- 実行されますが、HAVING句がGROUP BY句の前にあるため、結果は表示されません。
Answer: A. HAVING句はGROUPBY句の前に置くことができますが、グループの結果が計算された後にのみ処理されます。
59. Predict the outcome of the below query
SELECT department_id , COUNT(first_name )
FROM employees
WHERE job IN ('SALESMAN','CLERK','MANAGER','ANALYST')
GROUP BY department_id
HAVING AVG(salary ) BETWEEN 2000 AND 3000;
- BETWEEN演算子はHAVING句で使用できないため、エラーが返されます。
- WHERE句とHAVING句を同じSELECTステートメントで使用できないため、エラーが返されます。
- WHERE句とHAVING句を使用して同じ列に条件を適用することはできないため、エラーが返されます。
- 正常に実行されます。
Answer: D. WHERE句は、グループ句の処理に参加する行数を制限します。
60. Which statements are true regarding the WHERE and HAVING clauses in a SELECT statement?
- HAVING句は、サブクエリのグループ関数で使用できます。
- WHERE句を使用すると、行をグループに分割した後、行を除外できます。
- WHERE句を使用すると、行をグループに分割する前に行を除外できます。
- WHERE句とHAVING句は、テーブルの異なる列に適用される場合にのみ、同じステートメントで使用できます。
Answer: A, C. WHERE句とHAVING句は、クエリで一緒に使用できます。WHEREはグループ処理の前に行を除外し、HAVINGはグループを制限します。
Examine the table structure as given and answer the questions 61 and 62 that follow.
SQL> DESC employees
Name Null? Type
----------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
61. Predict the outcome of the below query.
SELECT department_id , avg(salary )
FROM employees
HAVING avg(salary ) > min(salary )
GROUP BY department_id ;
- HAVING句で使用される集計関数はSELECTリストに含まれている必要があるため、エラーがスローされます。
- HAVING句がGROUPBY句の前にあるため、エラーがスローされます。
- 平均給与が部門の最低給与よりも高い部門が表示されます。
- 平均給与が組織の最低給与よりも高い部門が表示されます。
Answer: C. HAVING句でグループ関数を使用して、グループをフィルタリングできます。
62. Interpret the output of the below query.
SELECT SUM(AVG(LENGTH(first_name )))
FROM employees
GROUP BY department_id ;
- 各部門の従業員の名前の長さの平均の合計を計算します。
- 各部門の従業員の名前の平均の長さを計算します。
- 単一行関数はグループ関数では使用できないため、エラーがスローされます。
- グループ列DEPARTMENT_IDがSELECTリストで使用されていないため、エラーがスローされます。
Answer: A. グループ関数は、SELECTクエリの単一行または一般関数で使用できます。
63. Up to how many levels, the group functions can be nested?
- 1
- 2
- 3
- 無制限
Answer: B. グループ関数は、最大2レベルまでネストできます。ただし、単一行関数は、任意の数のレベルまでネストできます。
64. What is the limit of number of groups within the groups created by GROUP BY clause?
- 1
- 2
- 3
- 制限なし
Answer: D. 形成できるグループとサブグループの数に制限はありません。
65. Choose the correct statements about the HAVING clause.
- HAVING句は、SELECTステートメントのオプションの句です。
- SELECTステートメントでGROUPBY句を使用する場合、HAVING句は必須の句です。
- HAVING句は、GROUPBY句を使用する場合にのみSELECTステートメントに含めることができます。
- SELECTステートメントでGROUPBY句を使用する場合、HAVING句は必須の句です。
Answer: A, C. HAVING句は、GROUP BY句が存在する場合にのみクエリに表示できますが、その逆は当てはまりません。
66. What is the output of the below query.
SELECT count(*) FROM dual GROUP BY dummy;
- 1
- 0
- NULL
- グループ関数をDUALテーブルに適用できないため、エラーがスローされます。
Answer: A. DUALテーブルには、値が「X」であるタイプCHAR(1)の単一列DUMMYが含まれています。
Based on the below scenario, answer the question from 67 to 74.
ある組織には、1000人の固定給与で働く14人の従業員がいます。会社は、給与部門によって給与がまだ固定されていない5人の新しい従業員を採用しています。ただし、月末の処理中に、人事給与部門は組織の財務データを調整するためにいくつかのレポートを生成します。与えられたテーブル構造を調べます。
SQL> DESC employees
Name Null? Type
----------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
67. What is the output of the below query?
SELECT SUM (salary ) FROM employees ;
- NULL
- 14000
- 19000
- 0
Answer: B. SUM関数は、従業員の給与を追加します。
68. What is the output of the below query?
SELECT AVG (salary ) FROM employees ;
- 1000
- 736.84
- NULL
- 0
Answer: A. AVG(salary)関数は、給与の平均を計算し、NULL値を無視します。この場合、AVG(salary)=(14 * 1000)/ 14 = 1000です。
69. What is the output of the below query?
SELECT AVG (nvl(salary ,0)) FROM employees ;
- 1000
- NULL
- 736.84
- 0
Answer: C. AVG(NVL(salary、0))は、NULLに代替値を与え、NULLが平均計算に参加できるようにします。この場合、(14 * 1000)/ 19 = 736.84です。
70. What is the output of the below query?
SELECT VARIANCE (salary ) FROM employees ;
- 1000
- 0
- NULL
- 204678.36
Answer: B. VARIANCE(salary)は、NULLを無視して給与列の値の分散を計算します。
71. What is the output of the below query?
SELECT VARIANCE (nvl(salary ,0)) FROM employees ;
- 1000
- 0
- NULL
- 204678.36
Answer: D. VARIANCE(NL(salary、0))は、NULLを含む給与列値の分散を計算します。
72. What is the output of the below query?
SELECT STDDEV (salary ) FROM employees ;
- 1
- 1000
- 0
- NULL
Answer: C. STDDEV(salary)は、NULLを無視して給与列値の標準偏差を計算します。
73. What is the output of the below query?
SELECT STDDEV (nvl(salary ,0)) FROM employees ;
- 0
- 452.41
- 1000
- NULL
Answer: B. STDDEV(nvl(salary、0))は、NULLを含む給与列値の標準偏差を計算します。
74. What is the output of the below query?
- 19,19
- 14,19
- 19,14
- 14,14
Answer: C. COUNT(*)にはNULLが含まれますが、COUNT(salary)はNULL値を無視します。
75. Examine the table structure as given.
SQL> DESC employees
Name Null? Type
----------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
次のクエリのうち、5人以上の従業員が働いている部門に与えるものはどれですか?
SELECT department_id FROM employees WHERE COUNT(*) > 5 GROUP BY department_id ;
SELECT department_id FROM employees HAVING COUNT(*) > 5;
SELECT department_id FROM employees GROUP BY employee_id HAVING COUNT(*) > 5;
SELECT department_id FROM employees GROUP BY department_id HAVING COUNT(*) > 5;
Answer: D.
76. Which of the following are true about the CUBE extension of GROUP BY?
- 1つのクエリで複数のGROUPBY句を実行できるようにします。
- 含まれる列のすべての可能な組み合わせに対して集計を実行します。
- 提供された列リストに基づいて、累積小計のレベルを上げて実行します。
- 上記のどれでもない
Answer: B. CUBE、ROLLUPは、OLAP処理に使用されるGROUPBY拡張機能です。CUBEは、列の新しい順列が形成されるたびに結果を集約します。
Use the following SELECT statement to answer below questions 77 to 82:
1 SELECT customer#, COUNT(*)
2 FROM customers JOIN orders USING (customer#)
3 WHERE orderdate > '02-APR-09'
4 GROUP BY customer#
5 HAVING COUNT(*) > 2;
77. Which line of the SELECT statement is used to restrict the number of records the query processes?
- 1
- 3
- 4
- 5
Answer: B. WHERE句は、グループが形成される前に行を制限するために使用されます。
78. Which line of the SELECT statement is used to restrict groups displayed in the query results?
- 1
- 3
- 4
- 5
Answer: D. HAVINGは、グループ処理が終了した後にグループ結果を制限するために使用されます。
79. Which line of the SELECT statement is used to group data stored in the database?
- 1
- 3
- 4
- 5
Answer: C. GROUP BY句は、group by列を使用して、テーブル内のデータをグループ化します。
80. Which clause must be included for the query to execute successfully?
- 1
- 3
- 4
- 5
Answer: C. SELECT句にはCUSTOMER#列が含まれているため、CUSTOMER#列にGROUPBY句を含める必要があります。
81. What is the purpose of using COUNT(*) in the SELECT query?
- 指定されたテーブルのレコード数
- 各顧客からの注文数
- 指定されたテーブルのNULL値の数
- ご注文いただいたお客様の数
Answer: B. グループの下で処理されている行の数をカウントします。この場合、グループは顧客によって形成され、COUNT(*)は各顧客からの注文をカウントします。
82. Which of the following functions can be used to determine the earliest ship date for all orders recently processed by JustLee Books?
- COUNT関数
- MAX機能
- MIN関数
- STDDEV関数
Answer: C. MIN関数は、列の最小値を取得するために使用されます。日付列とともに使用すると、列から最小の日付をフェッチします。
83. Which of the following is not a valid SELECT statement?
SELECT STDDEV(retail) FROM books;
SELECT AVG(SUM(retail)) FROM orders NATURAL JOIN orderitems NATURAL JOIN books GROUP BY customer#;
SELECT order#, TO_CHAR(SUM(retail),'999.99') FROM orderitems JOIN books USING (isbn) GROUP BY order#;
SELECT title, VARIANCE(retail-cost) FROM books GROUP BY pubid;
Answer: D. GROUP BY句は、SELECT句に含まれる列または列のセットを指定する必要があります。ここでは、PUBIDがSELECT句に含まれていないため、クエリは無効です。
84. Which of the below statements are true about the nesting of group functions?
- 最も内側の関数が最初に解決されます。
- Oracleでは、最大3レベルのグループ関数をネストできます。
- 単一行関数は、グループ関数とネストできます。
- Oracleでは、最大2レベルのグループ関数をネストできます。
Answer: A, C, D. ネストされた関数を含む式では、最も内側の関数が最初に実行され、その結果が外側に移動する次の関数に送られます。単一行関数は、最大2レベルまでネストできるグループ関数でうまく使用できます。
85. What are the statistical group functions in Oracle?
- AVG
- STDDEV
- VARIANCE
- STATS
Answer: B, C. VARIANCEおよびSTATSは、OracleSQLで使用可能な統計グループ関数です。
86. If the SELECT list contains a column and a group functions, which of the following clause must be mandatorily included?
- ORDER BY
- HAVING
- GROUP BY
- どれでもない
Answer: C. GROUP BY句には、SELECT句に含まれる列または列のセットが必ず含まれている必要があります。
87. Examine the table structure as given.
SQL> DESC employees
Name Null? Type
----------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
このSQLステートメントが実行されない理由についての最も良い説明は何ですか?
SELECT department_id "Department", AVG (salary)"Average"
FROM employees
GROUP BY Department;
- すべての数値が均等に分割されるわけではないため、給与を平均することはできません。
- GROUPBY句で列エイリアスを使用することはできません。
- GROUP BY句には、GROUPするものが必要です。
- 部門IDは部門テーブルにリストされていません。
Answer: B. GROUPBY句もHAVING句も列エイリアスでは機能しません。
88. Which of the following data types are compatible with AVG, SUM, VARIANCE, and STDDEV functions?
- 数値データ型のみ
- 整数のみ
- 任意のデータ型
- 数値を除くすべて
Answer: A. 関数AVG、SUM、VARIANCE、およびSTDDEVは、数値データ型でのみ強制的に機能します。
Examine the table structure as given below and answer the questions 89 and 90 that follow.
SQL> DESC employees
Name Null? Type
----------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
89. Which of the below query will display the number of distinct job categories working in each department?
SELECT department_id , COUNT(DISTINCT job) FROM employees GROUP BY job;
SELECT department_id , COUNT(job) FROM employees GROUP BY employee_id ;
SELECT department_id , COUNT(job) FROM employees GROUP BY department_id ;
SELECT department_id , COUNT(DISTINCT job) FROM employees GROUP BY department_id ;
Answer: D. DISTINCT修飾子を使用して、重複を除外します。
90. Evaluate this SQL statement:
SELECT employee_id , first_name , department_id , SUM(salary )
FROM employees
WHERE salary > 1000
GROUP BY department_id , employee_id , first_name
ORDER BY hiredate;
このステートメントでエラーが発生するのはなぜですか?
- HAVING句がありません。
- WHERE句に構文エラーが含まれています。
- SALARY列はGROUPBY句に含まれていません。
- HIRE_DATE列はGROUPBY句に含まれていません。
Answer: D. SELECTおよびORDERBY句に表示されるすべての列は、GROUPBY句に含まれている必要があります。
91. Which of the following statements is true about the GROUP BY clause?
- GROUP BY句を使用して行をグループに分割する前に行を除外するには、wHERE句を使用します。
- HAVING句をGROUPBY句と一緒に使用する必要があります。
- 列エイリアスは、GROUPBY句で使用できます。
- デフォルトでは、GROUP BY句が使用されている場合、行はソートされません。
Answer: A. WHERE句を使用すると、行をグループに分割する前に行を除外できます。
92. Examine the table structure as given.
SQL> DESC employees
Name Null? Type
----------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
以下のクエリの結果を解釈します。
SELECT department_id , MIN (hiredate)
FROM employees
GROUP by department_id ;
- 組織内で最も早い採用日。
- 組織内の最新の採用日。
- 部門での最も早い雇用日。
- 部門の最新の採用日。
Answer: C. クエリは、各部門で最も早く雇用された従業員を返します。
93. Which statement about group functions is true?
- COUNT(*)以外のグループ関数は、null値を無視します。
- SELECTリストにグループ関数を含むクエリには、GROUPBY句を含める必要があります。
- グループ関数はWHERE句で使用できます。
- グループ関数は、SELECTリストでのみ使用できます。
Answer: A. COUNT(*)を除くすべてのグループ関数は、NULL値を無視します。これは、特定の列に直接含まれている値を処理するためです。
94. Which of the following clauses represent valid uses of group functions?
- GROUP BY MAX(給与)
- ORDER BY AVG(給与)
- HAVING MAX(給与)> 10000
- SELECT AVG(NVL(salary、0))
Answer: B, C, D. グループ関数は、SELECT、HAVING、およびORDERBY句にのみ表示できます。
95. Which of the following statements are true about the GROUP BY clause?
- GROUP BY句にリストされている最後の列は、最も主要なグループです。
- GROUP BY句にリストされている最初の列は、最も主要なグループです。
- GROUP BY句は、ORDERBY句なしでは使用できません。
- GROUP BY句は、出力の並べ替えを保証しません。
Answer: B. データのグループ化は、GROUPBY句に表示される列のシーケンスに基づいています。
96. What is difference between WHERE clause and HAVING clause?
- WHERE句はグループ化する前に行を制限し、HAVING句はグループを制限します。
- WHERE句にグループ関数を含めることはできませんが、HAVING句に含めることはできます。
- WHERE句は、ANDまたはOR演算子を使用して複数の条件を結合できますが、HAVING句は結合できません。
- WHERE句はGROUPBY句なしでSELECTクエリに表示できますが、HAVING句は表示できません。
Answer: A, B, D. WHERE句はグループ化する前に行を制限しますが、HAVINGはグループを制限します。
97. Examine the table structure as given.
SQL> DESC employees
Name Null? Type
----------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
以下のクエリの結果を予測します。
SELECT department_id ,job,count(*)
FROM employees
GROUP BY department_id ,job
ORDER BY department_id ,count(*);
- 正常に実行されます。
- ORDER BY句が無効であるため、エラーがスローされます。
- GROUP BY句が無効であるため、エラーがスローされます。
- GROUPBY句とORDERBY句は一緒に使用できないため、エラーがスローされます。
Answer: A. ORDER BY句は、グループ関数を使用して並べ替えることができます。