Учебники

Использование вопросов групповых функций

1. Что из перечисленного НЕ является функцией GROUP BY?

  1. МАКСИМУМ
  2. MIN
  3. NVL
  4. AVG

Ответ: C. NVL — это общая функция, используемая для предоставления альтернативного значения значениям NULL. Функции MAX, MIN и AVG могут использоваться в качестве функций GROUP BY.

2. Какую из следующих функций можно использовать без предложения GROUP BY в запросе SELECT?

  1. COUNT
  2. МАКСИМУМ
  3. MIN
  4. AVG

Ответ: A, B, C, D. Все перечисленные групповые функции можно использовать в запросе, если в запросе SELECT не выбраны другие столбцы.

3. Какой из следующих запросов SELECT возвращает номер отдела с максимальной заработной платой, выплачиваемой сотруднику? (Рассмотрим структуру таблицы как дано)

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)
  1. SELECT department_id , max(salary ) FROM employees ;
  2. SELECT department_id , max(salary ) FROM employees  GROUP BY department_id ;
  3. SELECT max(salary ) FROM employees  GROUP BY department_id ;
  4. SELECT max(salary ) FROM employees ;

Ответ: B. Функция MAX может использоваться для возврата максимальной зарплаты в отделе, где каждая группа сформирована отделом.

4. Какие из следующих утверждений верны в отношении функции COUNT?

  1. Функция COUNT считает количество строк
  2. Функция COUNT (*) подсчитывает количество строк с дубликатами и значениями NULL
  3. Функция COUNT (DISTINCT) подсчитывает количество отдельных строк
  4. COUNT (*) эквивалентно COUNT (ALL)

Ответ: B. COUNT (*) подсчитывает количество строк, включая дубликаты и NULL. Используйте ключевые слова DISTINCT и ALL, чтобы ограничить повторяющиеся значения и значения NULL.

5. Какие подходящие типы данных принимаются функциями GROUP BY?

  1. Вложенные таблицы
  2. ЧИСЛО
  3. CLOB
  4. ДАТА

Ответ: B. Типы данных для функций с аргументом могут быть CHAR, VARCHAR2, NUMBER или DATE.

6. Таблица T_COUNT имеет 12 числовых значений: 1, 2, 3, 32, 1, 1, ноль, 24, 12, ноль, 32, ноль. Прогнозировать результат запроса ниже.

SELECT COUNT (*) FROM t_count;
  1. 12
  2. 6
  3. 9
  4. Выдает исключение, потому что функция COUNT не работает со значениями NULL

Ответ: A. COUNT (*) подсчитывает количество строк, включая дубликаты и NULL. Используйте ключевые слова DISTINCT и ALL, чтобы ограничить повторяющиеся значения и значения NULL.

7. Таблица T_COUNT имеет 12 числовых значений: 1, 2, 3, 32, 1, 1, ноль, 24, 12, ноль, 32, ноль. Прогнозировать результат запроса ниже.

SELECT COUNT (num) FROM t_count;
  1. 12
  2. 6
  3. 9
  4. Выдает исключение, потому что функция COUNT не работает со значениями NULL

Ответ: C. COUNT (столбец) игнорирует значения NULL, но подсчитывает дубликаты.

8. Таблица T_COUNT имеет 12 числовых значений: 1, 2, 3, 32, 1, 1, ноль, 24, 12, ноль, 32, ноль. Прогнозировать результат запроса ниже.

SELECT COUNT (ALL num) FROM t_count;
  1. 12
  2. 6
  3. 9
  4. Выдает исключение, потому что функция COUNT не работает со значениями NULL

Ответ: C. COUNT (столбец ALL) игнорирует значения NULL, но подсчитывает дубликаты.

9. Таблица T_COUNT имеет 12 числовых значений: 1, 2, 3, 32, 1, 1, ноль, 24, 12, ноль, 32, ноль. Прогнозировать результат запроса ниже.

SELECT COUNT (DISTINCT num) FROM t_count;
  1. 12
  2. 6
  3. 9
  4. Выдает исключение, потому что функция COUNT не работает со значениями NULL

Ответ: B. COUNT (столбец DISTINCT) считает отличные ненулевые значения.

10. Что происходит, когда приведенный ниже запрос выполняется в SQL * Plus?

SELECT COUNT() FROM dual;
  1. Выполняется успешно и не возвращает вывода
  2. Выполняется успешно и возвращает вывод как «1»
  3. Выдает исключение «ORA-00909: неверное количество аргументов»
  4. Выдает исключение «ORA-00904:» COUNT «: неверный идентификатор», потому что функция COUNT не работает с таблицей DUAL

Ответ: функция C. COUNT требует минимум один аргумент, который может быть либо столбцом с [ALL | DISTINCT] модификатор или ‘*’.

11. Вот несколько утверждений о функции VARIANCE в SQL.

я. Функция принимает несколько числовых входов и возвращает дисперсию всех значений

II. Функция принимает числовой столбец и возвращает дисперсию всех значений столбца, включая NULL.

III. Функция принимает числовой столбец и возвращает дисперсию всех значений столбца, кроме NULL.

Выберите правильную комбинацию из приведенных ниже вариантов.

  1. я и iii
  2. я и ii
  3. б
  4. III

Ответ: C. Функция VARIANCE принимает один числовой аргумент в качестве имени столбца и возвращает дисперсию всех значений столбца, учитывая NULL.

12. Что из перечисленного НЕ является расширением GROUP BY в SQL?

  1. ГРУППА ПО
  2. ГРУППОВЫЕ КОМПЛЕКТЫ
  3. CUBE
  4. СВЕРНУТЬ

Ответ: A. Операции GROUPING SETS можно использовать для выполнения нескольких агрегаций GROUP BY одним запросом.

13. Выберите правильные утверждения о запросе ниже. Рассмотрим структуру таблицы как дано.

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 ;
  1. SUM является группой по функциям, потому что она обрабатывает группу сотрудников, работающих в отделе
  2. SUM является агрегатной функцией, поскольку она выдает один результат на группу данных
  3. SUM — это функция с одной строкой, потому что она возвращает одно значение для группы, то есть отдела
  4. SUM — это функция группирования по расширению, поскольку она использует предложение GROUP BY для логической группировки отделов.

Ответ: A. SUM — это групповая функция, которая вычисляет сумму заработной платы группы сотрудников, работающих в отделе.

14. Какое предложение используется для фильтрации выходных данных запроса на основе агрегированных результатов с использованием группирования по функциям?

  1. ГДЕ
  2. ПРЕДЕЛ
  3. ГРУППА ГДЕ
  4. HAVING

Ответ: D. HAVING Предложение используется для ограничения результатов группы. Вы используете предложение HAVING, чтобы указать группы, которые должны отображаться, тем самым дополнительно ограничивая группы на основе совокупной информации. Предложение HAVING может предшествовать предложению GROUP BY, но рекомендуется сначала поместить предложение GROUP BY, поскольку оно более логично. Группы формируются и групповые функции рассчитываются до того, как предложение HAVING применяется к группам в списке SELECT.

15. Изучите данную структуру таблицы и спрогнозируйте результат следующего запроса.

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;
  1. Запрос возвращает количество сотрудников, у которых нет комиссии
  2. Запрос выдает ошибку, потому что знак равенства не может быть использован при поиске значения NULL
  3. Запрос возвращает количество сотрудников в отделе, комиссия которого равна NULL.
  4. Запрос выдает ошибку, поскольку в запросе отсутствует предложение GROUP BY

Ответ: B. Исключение NULL с использованием условия WHERE — это способ заставить запрос игнорировать NULL. Но здесь использование оператора IS NULL неверно. Условие должно быть «ГДЕ КОММ НУЛЬ».

16. Какое из следующих утверждений верно в отношении групповых функций?

  1. Функция MIN может использоваться только с числовыми данными.
  2. Функция MAX может использоваться только со значениями даты.
  3. Функция AVG может использоваться только с числовыми данными.
  4. Функция SUM не может быть частью вложенной функции.

Ответ: C. Функция AVG может использоваться только с числовыми значениями. Другими функциями, имеющими такое ограничение, являются SUM, STDDEV и VARIANCE.

17. Что из следующего является допустимым оператором SELECT?

  1. SELECT AVG(retail-cost) FROM books GROUP BY category;
  2. SELECT category, AVG(retail-cost) FROM books;
  3. SELECT category, AVG(retail-cost) FROM books WHERE AVG(retail-cost) > 8.56 GROUP BY category;
  4. SELECT category, AVG(retail-cost) Profit FROM books GROUP BY category HAVING profit > 8.56;

Ответ: A. Псевдонимы столбцов нельзя использовать в предложениях GROUP BY или HAVING.

18. Какое из следующих утверждений является правильным?

  1. Предложение WHERE может содержать групповую функцию, только если эта функция также не указана в предложении SELECT.
  2. Групповые функции нельзя использовать в предложениях SELECT, FROM или WHERE.
  3. Предложение HAVING всегда обрабатывается перед предложением WHERE.
  4. Предложение GROUP BY всегда обрабатывается перед предложением HAVING.

Ответ: D. Хотя Oracle не выдает ошибку, если предложение HAVING предшествует предложению GROUP BY, но оно обрабатывается только после того, как предложение GROUP BY обработано и группа готова к фильтрации.

19. Что из перечисленного не является допустимым оператором SQL?

  1. SELECT MIN(pubdate) FROM books GROUP BY category HAVING pubid = 4;
  2. SELECT MIN(pubdate) FROM books WHERE category = 'COOKING';
  3. SELECT COUNT(*) FROM orders WHERE customer# = 1005;
  4. SELECT MAX(COUNT(customer#)) FROM orders GROUP BY customer#;

Ответ: А.

20. Какое из следующих утверждений является правильным?

  1. Функция COUNT может использоваться для определения количества строк, содержащих значение NULL.
  2. Только групповые значения включены в групповые функции, если только ключевое слово ALL не включено в предложение SELECT.
  3. Предложение WHERE ограничивает обрабатываемые строки.
  4. Предложение HAVING определяет, какие группы отображаются в результатах запроса.

Ответ: C, D. Предложение WHERE ограничивает строки до их группировки и обработки, в то время как предложение HAVING ограничивает группы.

21. Что из следующего является допустимым оператором SQL?

  1. SELECT customer#, order#, MAX(shipdate-orderdate) FROM orders GROUP BY customer# WHERE customer# = 1001;
  2. SELECT customer#, COUNT(order#) FROM orders GROUP BY customer#;
  3. SELECT customer#, COUNT(order#) FROM orders GROUP BY COUNT(order#);
  4. SELECT customer#, COUNT(order#) FROM orders GROUP BY order#;

Ответ: B. Предложение GROUP BY должно содержать все столбцы, кроме столбца, который используется внутри функции группы.

22. Какое из следующих утверждений SELECT перечисляет только книгу с наибольшей прибылью?

  1. SELECT title, MAX(retail-cost) FROM books GROUP BY title;
  2. SELECT title, MAX(retail-cost) FROM books GROUP BY title HAVING MAX(retail-cost);
  3. SELECT title, MAX(retail-cost) FROM books;
  4. Ни один из вышеперечисленных

Ответ: А.

23. Какое из следующих утверждений является / является правильным?

1. Групповая функция может быть вложена в групповую функцию.

2. Групповая функция может быть вложена в однорядную функцию.

3. Однорядная функция может быть вложена в групповую функцию.

  1. 1
  2. 2
  3. 3
  4. 1 и 3

Ответ: A, B, C. Групповые функции могут быть вложены только на глубину двух. Групповые функции могут быть вложены в однорядные функции (AVG встроен в функцию TO_CHAR). Кроме того, однорядные функции могут быть вложены в групповые функции.

24. Какая из следующих функций используется для вычисления общего значения, хранящегося в указанном столбце?

  1. COUNT
  2. ДОБАВЛЯТЬ
  3. ВСЕГО
  4. SUM

Ответ: функция D. SUM используется для сложения числовых значений.

25. В каком из следующих утверждений SELECT указана самая высокая розничная цена всех книг в категории «Семья»?

  1. SELECT MAX(retail) FROM books WHERE category = 'FAMILY';
  2. SELECT MAX(retail) FROM books HAVING category = 'FAMILY';
  3. SELECT retail FROM books WHERE category = 'FAMILY' HAVING MAX(retail);
  4. Ни один из вышеперечисленных

Ответ: A. Поскольку категория FAMILY должна быть ограничена перед группировкой, строки таблицы должны быть отфильтрованы с использованием предложения WHERE, а не предложения HAVING.

26. Какую из следующих функций можно использовать для включения значений NULL в вычисления?

  1. SUM
  2. NVL
  3. МАКСИМУМ
  4. MIN

Ответ: B. NVL — это общая функция для предоставления альтернативных значений значениям NULL. Это может реально изменить арифметические вычисления с использованием групповых функций AVG, STDDEV и VARIANCE.

27. Что из нижеперечисленного не является действительным утверждением?

  1. Вы должны ввести ключевое слово ALL в групповую функцию, чтобы включить все повторяющиеся значения.
  2. С помощью функции AVG можно найти среднюю вычисленную разницу между двумя датами.
  3. Функции MIN и MAX могут использоваться в столбцах VARCHAR2.
  4. Все вышеперечисленное

Ответ: A. Ключевое слово ALL считает дубликаты, но игнорирует NULL. Дубликаты также включены в «*» и спецификацию имени столбца.

28. Какой из следующих операторов SQL определяет, сколько всего клиентов было указано другими клиентами?

  1. SELECT customer#, SUM(referred) FROM customers GROUP BY customer#;
  2. SELECT COUNT(referred) FROM customers;
  3. SELECT COUNT(*) FROM customers;
  4. SELECT COUNT(*) FROM customers WHERE referred IS NULL;

Ответ: B. Рассматривая всех клиентов как одну группу, COUNT (рекомендованный) будет учитывать только тех, кого кто-то направил. COUNT (по ссылке) будет игнорировать значения NULL столбца.

29. Определите правильный порядок выполнения следующих предложений в инструкции SELECT.

1.SELECT

2.В

3.Where

4. ГРУППА ПО

5.HAVING

6. ЗАКАЗАТЬ

  1. 2-3-4-5-1-6
  2. 1-2-3-4-5-6
  3. 6-5-4-3-2-1
  4. 5-4-2-3-1-6

Ответ: A. Порядок обработки начинается с предложения FROM, чтобы получить имена таблиц, затем ограничивает строки с помощью предложения WHERE, группирует их с помощью предложения GROUP BY, ограничивает группы с помощью предложения HAVING. Предложение ORDER BY — последнее, которое будет обработано для сортировки окончательного набора данных.

30. Какое из приведенных ниже предложений используется для группировки набора строк на основе столбца или набора столбцов?

  1. HAVING
  2. ГДЕ
  3. ГРУППА ПО
  4. GROUPING

Ответ: C. Предложение GROUP BY формирует группы данных на основе указанного списка столбцов.

31. Какие из следующих групповых функций можно использовать для проблем дисперсии населения и стандартного отклонения населения?

  1. VAR_POP
  2. STDDEV_POP
  3. VARIANCE
  4. STDDEV_SASMP

Ответ: А, Б.

32. Выберите позиции в запросе SELECT, где может появиться групповая функция.

  1. Оператор SELECT
  2. ГДЕ оговорка
  3. Предложение ORDER BY
  4. Предложение GROUP BY

Ответ: A, C, D. Групповые функции могут появляться в предложениях SELECT, ORDER BY и HAVING. Oracle вызывает исключение, если групповые функции используются в предложениях WHERE или GROUP BY.

33. Изучите структуру таблицы СОТРУДНИКОВ, как указано. Какой запрос вернет минимальную зарплату в каждом отделе?

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)
  1. SELECT department_id , MIN (salary ) from EMPLOYEES ;
  2. SELECT department_id , MIN (salary ) from EMPLOYEES  GROUP BY department_id ;
  3. SELECT department_id , MIN (salary ) from EMPLOYEES  GROUP BY salary ;
  4. SELECT department_id , MIN (salary ) from EMPLOYEES  GROUP BY employee_id ;

Ответ: Функция B. MIN возвращает минимальную зарплату в группе, сформированной отделом.

34. Изучите структуру таблицы EMPLOYEES и интерпретируйте результат запроса ниже.

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. Выдает ошибку, потому что в запросе может использоваться только одна агрегатная функция.
  2. Выдает ошибку, поскольку отсутствует предложение GROUP BY.
  3. Он успешно выполняется и возвращает одинаковые значения для обоих.
  4. Он успешно выполняется, когда COUNT (*) включает NULL и COUNT (все комм.), Кроме NULL.

Ответ: Д.

35. Что из следующего верно для групповых функций?

  1. Вы можете использовать групповые функции в любом предложении оператора SELECT.
  2. Вы можете использовать групповые функции только в списке столбцов предложения select и в предложении WHERE оператора SELECT.
  3. Вы можете смешивать столбцы из одной строки с групповыми функциями в списке столбцов оператора SELECT, группируя столбцы из одной строки.
  4. Вы можете передавать имена столбцов, выражения, константы или функции в качестве параметров групповой функции.

Ответ: C. Групповые функции могут быть вложены только на глубину двух. Групповые функции могут быть вложены в однорядные функции (AVG встроен в функцию TO_CHAR). Кроме того, однорядные функции могут быть вложены в групповые функции.

36. Изучите структуру таблицы СОТРУДНИКОВ как дано. Вы хотите создать представление emp_dept_sales, выполнив следующие операторы SQL.

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 ;

Какое утверждение верно в отношении выполнения вышеуказанного заявления?

  1. Представление будет создано, и вы можете выполнять операции DLM в представлении.
  2. Представление не будет создано, поскольку операторы объединения не могут создавать представление
  3. Представление не будет создано, поскольку предложение GROUP BY не разрешено для создания представления.
  4. Представление будет создано, но никакие операции DML не будут разрешены в представлении

Ответ: D. Правила выполнения операций DML в представлении. Вы не можете добавлять данные через представление, если представление включает в себя групповые функции или предложение GROUP BY или ключевое слово DISTINCT. Псевдостолбец Ключевое слово ROWNUM Столбцы, определенные выражениями NOT NULL, столбцы в базовых таблицах, которые не выбраны представлением.

37. Какое из следующих утверждений верно в отношении взглядов?

  1. Подзапрос, который определяет представление, не может включать предложение GROUP BY
  2. Представление, созданное с помощью подзапроса с ключевым словом DISTINCT, может быть обновлено
  3. Операция языка манипулирования данными (DML) может быть выполнена для представления, созданного с помощью подзапроса, имеющего все столбцы NOT NULL таблицы
  4. Представление, созданное с помощью подзапроса с ключевым словом ROWNUM псевдостолбца, не может быть обновлено

Ответ: C, D. Правила выполнения операций DML в представлении. Вы не можете добавлять данные через представление, если представление включает в себя групповые функции или предложение GROUP BY или ключевое слово DISTINCT. Псевдостолбец Ключевое слово ROWNUM Столбцы, определенные выражениями NOT NULL, столбцы в базовых таблицах, которые не выбраны представлением.

38. Изучите структуру таблицы как дано.

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 ;
  1. ГДЕ
  2. ВЫБРАТЬ
  3. СОРТИРОВАТЬ ПО
  4. ГРУППА ПО

Ответ: D. Предложение GROUP BY должно содержать все столбцы, появляющиеся в операторе SELECT. Это вызывает ошибку, потому что JOB не выбранный столбец. Он должен был использовать DEPARTMENT_ID вместо JOB.

39. Изучите структуру таблицы как дано.

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 отобразит максимальную и минимальную заработную плату, полученную в каждой категории вакансий?

  1. SELECT job, MAX(salary ), MIN (salary ) FROM employees  GROUP BY department_id ;
  2. SELECT job, MAX(salary ), MIN (salary ) FROM employees  GROUP BY job;
  3. SELECT job, MAX(salary ), MIN (salary ) FROM employees ;
  4. Две агрегатные функции не могут использоваться вместе в операторе SELECT.

Ответ: B. В операторе SELECT может отображаться несколько групповых функций.

40. Рассмотрим структуру таблицы как дано.

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;
  1. Он успешно выполняется и генерирует требуемый результат.
  2. Это приводит к ошибке, потому что COUNT (*) также должен быть указан в предложении SELECT.
  3. Он выполняется успешно, но не дает результата, потому что вместо COUNT (*) следует использовать COUNT (prod_id).
  4. Это приводит к ошибке, потому что COUNT (*) должен быть только в предложении HAVING, а не в предложении WHERE.

Ответ: D. Групповые функции нельзя использовать в предложении WHERE. Может появляться в предложениях SELECT, HAVING и ORDER BY.

41. Изучите структуру таблицы как дано.

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;
  1. Он выполняется успешно и перечисляет количество сотрудников по каждой категории должностей, но игнорирует предложение HAVING, поскольку «зарплата» отсутствует в предложении GROUP BY.
  2. Выдает ошибку, потому что предложение HAVING недопустимо.
  3. Выдает ошибку, потому что «зарплата» не включена в предложение GROUP BY.
  4. Он успешно выполняется и перечисляет количество сотрудников в каждой категории с суммой зарплаты более 5000.

Ответ: D. Предложение HAVING ограничивает результаты группы. Функция COUNT используется для подсчета, в то время как SUM используется для добавления числовых значений.

42. Что является истинным при использовании групповых функций в столбцах, которые содержат значения NULL?

  1. Групповые функции в столбцах игнорируют значения NULL.
  2. Групповые функции для столбцов, возвращающих даты, включают значения NULL.
  3. Групповые функции в столбцах, возвращающих числа, включают значения NULL.
  4. Групповые функции для столбцов не могут быть точно использованы для столбцов, которые содержат значения NULL.

Ответ: A. За исключением функции COUNT, все групповые функции игнорируют значения NULL.

43. Какие из следующих утверждений верны в отношении использования столбцов GROUP BY в подзапросе?

  1. Подзапросы могут содержать предложения GROUP BY и ORDER BY.
  2. Подзапросы не могут содержать предложения GROUP BY и ORDER BY.
  3. Подзапросы могут содержать ORDER BY, но не предложение GROUP BY.
  4. Подзапросы не могут содержать ORDER BY, но могут содержать предложение GROUP BY.

Ответ: A. Как и основной запрос, подзапрос может содержать предложение GROUP BY, а также предложение ORDER BY.

Изучите структуру таблицы и ответьте на следующие вопросы 44–49.

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. Предсказать результат запроса ниже

SELECT avg(max(salary ))
FROM employees 
GROUP BY department_id 
HAVING avg(max(salary ))>100;
  1. Это выполняется успешно.
  2. Это дает ошибку, потому что предложение HAVING недопустимо.
  3. Это дает ошибку, потому что выражение GROUP BY недопустимо.
  4. Это дает ошибку, потому что агрегатные функции не могут быть вложены в оператор SELECT.

Ответ: B. Предложение HAVING не позволяет вкладывать агрегатные функции.

45. Прогнозируем результат запроса ниже

SELECT avg(salary ), department_id 
FROM employees 
GROUP BY department_id ;
  1. Это дает ошибку, потому что агрегатная функция не может появиться сразу после предложения SELECT.
  2. Это дает ошибку, потому что предложение GROUP BY недопустимо.
  3. Он выполняется без ошибок, но не выводит.
  4. Выполняется успешно и дает среднюю зарплату в каждом отделе.

Ответ: D. Групповые функции можно использовать в любой последовательности (до или после группировки по столбцам) в запросе SELECT.

46. ​​Прогнозируем результат запроса ниже

SELECT lower(job),avg(salary )
FROM employees 
GROUP BY upper(job);
  1. Он успешно выполняется и отображает «задание» в нижнем регистре.
  2. Выполняется успешно, но отображает «задание» в оригинальном случае.
  3. Выдает ошибку, потому что одиночные строки и агрегатные функции не могут использоваться вместе.
  4. Выдает ошибку, потому что преобразование регистра в списке SELECT не соответствует предложению GROUP BY преобразования регистра.

Ответ: D. Функция LOWER, являющаяся одной строкой, должна быть указана в предложении GROUP BY, чтобы основывать группировку данных EMPLOYEES.

47. Какой из приведенных ниже запросов выполняется успешно?

  1. SELECT employee_id , COUNT(hiredate-sysdate) FROM employees ;
  2. SELECT AVG(salary ), MAX(salary ) FROM employees ;
  3. SELECT AVG(salary ), MAX(salary ) FROM employees  GROUP BY department_id ;
  4. SELECT AVG(hiredate) FROM employees ;

Ответ: B, C. Первый запрос оперирует всеми данными СОТРУДНИКОВ, а второй обрабатывает данные в группах отделов.

48. Определите ошибку в приведенной ниже инструкции SELECT.

SELECT department_id , AVG (salary )
FROM employees 
GROUP BY department_id 
HAVING department_id  > 10;
  1. Выполняется успешно и отображает среднюю зарплату отделов выше 10.
  2. Выдает ошибку, потому что неагрегированный столбец нельзя использовать в предложении HAVING.
  3. Он выполняется успешно, но отображает неверный результат для отделов.
  4. Выдает ошибку, потому что предложение HAVING должно быть помещено перед предложением GROUP BY.

Ответ: A. Выражения GROUP BY могут использоваться в предложении HAVING для фильтрации групп из окончательного набора данных.

49. Прогнозируем вывод следующего запроса

SELECT department_id , AVG (salary )
FROM employees 
GROUP BY department_id 
HAVING (department_id >10 and AVG(salary )>2000);
  1. Выдает ошибку, потому что в предложении HAVING не может быть указано несколько условий.
  2. Выдает ошибку, поскольку в предложении HAVING нельзя использовать столбец без агрегирования.
  3. Он успешно выполняется и отображает среднюю зарплату отдела выше 10 и более 2000.
  4. Выполняется успешно, но результат не отображается.

Ответ: C. Предложение HAVING может накладывать несколько условий, объединенных с помощью оператора И или ИЛИ, фильтрующих группы.

50. Какие из следующих групповых функций можно использовать со значениями DATE?

  1. AVG
  2. MIN
  3. SUM
  4. COUNT

Ответ: B, D. Групповые функции AVG и SUM могут использоваться только с числовыми данными.

51. Какие из следующих утверждений верны?

  1. AVG и SUM могут использоваться только с числовыми типами данных.
  2. STDDEV и VARIANCE могут использоваться только с числовыми типами данных.
  3. MAX может использоваться с типом данных LONG.
  4. MAX и MIN не могут использоваться с типами данных LOB или LONG.

Ответ: A, B, D. Групповые функции AVG, SUM, VARIANCE и STDDEV могут использоваться только с числовыми данными. Ни одна из групповых функций не может использоваться с типом данных LONG.

52. Изучите структуру таблицы как дано.

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
  2. Предложение GROUP BY недействительно
  3. Функция COUNT не может использоваться со значениями DATE
  4. Нет ошибок, и он успешно выполняется

Ответ: Д.

53. Какую из следующих групповых функций можно использовать с типами данных больших объектов?

  1. МАКСИМУМ
  2. MIN
  3. COUNT
  4. Ни один из них

Ответ: D. С типами данных LOB нельзя использовать функцию агрегирования.

54. Изучите структуру таблицы как дано.

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)

Прогнозировать результаты следующих двух запросов

Запрос — 1

SELECT avg(comm)
FROM employees ;

Запрос — 2

SELECT avg(nvl(comm,0))
FROM employees ;
  1. Оба запроса дают одинаковый результат
  2. Query-1 и Query-2 дают разные результаты, потому что Query-1 рассматривает NULL-значения COMM, а Query-2 заменяет NULL-значения COMM на ноль
  3. Запрос — 1 выдает ошибку, потому что COMM имеет значения NULL
  4. Запрос — 2 выдает ошибку, потому что NVL не может быть вложен с агрегатной функцией.

Ответ: B. Функция AVG игнорирует значения NULL при расчете среднего числовых данных. AVG (столбец) будет вычислять среднее значение только для ненулевых значений. Однако, если NVL используется для замены NULL нулями, все значения будут учитываться.

55. Выберите правильные утверждения о предложении GROUP BY.

  1. Псевдоним столбца может использоваться в предложении GROUP BY.
  2. Столбец GROUP BY должен быть в предложении SELECT.
  3. Предложение GROUP BY должно появляться вместе с предложением HAVING запроса SELECT.
  4. Предложение GROUP BY должно появляться после предложения WHERE в запросе SELECT.

Ответ: D. Согласно последовательности обработки, предложение GROUP BY должно появляться после предложения WHERE в запросе SELECT.

56. Изучите структуру таблицы как дано.

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 ;
  1. Выдает ошибку, поскольку список столбцов GROUP BY не совпадает со списком столбцов SELECT.
  2. Он успешно выполняется и выдает среднюю зарплату по категориям работы в каждом отделе.
  3. Он успешно выполняется и производит среднюю зарплату для отдела в каждой категории работы.
  4. Выдает ошибку, потому что предложения GROUP BY и ORDER BY имеют разные списки столбцов.

Ответ: B. Хотя предложение GROUP BY неявно сортирует группы, предложения GROUP BY и ORDER BY могут использоваться вместе в запросе.

57. Какое предложение следует использовать, чтобы исключить групповые результаты в запросе с использованием групповых функций?

  1. ГДЕ
  2. HAVING
  3. ГРУППА ПО
  4. СОРТИРОВАТЬ ПО

Ответ: B. Предложение HAVING используется для ограничения групп.

Изучите структуру таблицы и ответьте на следующие вопросы 58 и 59.

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. Предсказать результат запроса ниже

SELECT department_id ,avg(salary )
FROM employees 
HAVING avg(salary )>2000
GROUP BY department_id 
ORDER BY department_id 
  1. Это выполняется успешно.
  2. Выдает ошибку, потому что предложение HAVING предшествует предложению GROUP BY.
  3. Выдает ошибку, потому что в предложении HAVING используется агрегатная функция.
  4. Он выполняется, но результаты не отображаются, поскольку предложение HAVING предшествует предложению GROUP BY.

Ответ: A. Предложение HAVING может предшествовать предложению GROUP BY, но оно обрабатывается только после вычисления результатов группы.

59. Прогнозировать результат запроса ниже

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;
  1. Он возвращает ошибку, потому что оператор BETWEEN нельзя использовать в предложении HAVING.
  2. Он возвращает ошибку, поскольку предложения WHERE и HAVING не могут использоваться в одном и том же операторе SELECT.
  3. Он возвращает ошибку, потому что предложения WHERE и HAVING нельзя использовать для применения условий к одному и тому же столбцу.
  4. Это выполняется успешно.

Ответ: D. Предложение WHERE ограничивает количество строк, участвующих в обработке предложения группы.

60. Какие утверждения верны в отношении предложений WHERE и HAVING в операторе SELECT?

  1. Предложение HAVING может использоваться с групповыми функциями в подзапросах.
  2. Предложение WHERE может использоваться для исключения строк после их разделения на группы.
  3. Предложение WHERE может использоваться для исключения строк перед их разделением на группы.
  4. Предложения WHERE и HAVING могут использоваться в одном и том же операторе, только если они применяются к разным столбцам таблицы.

Ответ: A, C. WHERE и предложение HAVING могут использоваться вместе в запросе. WHERE исключает строки перед групповой обработкой, в то время как HAVING ограничивает группы.

Изучите структуру таблицы и ответьте на следующие вопросы 61 и 62.

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. Предскажите результат запроса ниже.

SELECT department_id , avg(salary )
FROM employees 
HAVING avg(salary ) > min(salary )
GROUP BY department_id ;
  1. Выдает ошибку, потому что агрегатные функции, используемые в предложении HAVING, должны быть в списке SELECT.
  2. Выдает ошибку, потому что предложение HAVING появляется перед предложением GROUP BY.
  3. Отображает отделы, средняя зарплата которых превышает минимальную зарплату отдела.
  4. Отображает отделы, средняя зарплата которых превышает минимальную зарплату организации.

Ответ: C. Групповые функции могут использоваться предложением HAVING для фильтрации групп.

62. Интерпретировать вывод запроса ниже.

SELECT SUM(AVG(LENGTH(first_name )))
FROM employees  
GROUP BY department_id ;
  1. Он рассчитывает сумму средних значений длины имени сотрудника в каждом отделе.
  2. Он рассчитывает среднюю длину имени сотрудника в каждом отделе.
  3. Выдает ошибку, потому что однорядная функция не может использоваться с групповыми функциями.
  4. Выдает ошибку, поскольку столбец группы DEPARTMENT_ID не используется в списке SELECT.

Ответ: A. Групповые функции можно использовать с одной строкой или общими функциями в запросе SELECT.

63. До скольких уровней групповые функции могут быть вложенными?

  1. 1
  2. 2
  3. 3
  4. Без ограничений

Ответ: B. Групповые функции могут быть вложены максимум до 2 уровней. Однако однорядные функции могут быть вложены на любое количество уровней.

64. Каково ограничение количества групп в группах, созданных предложением GROUP BY?

  1. 1
  2. 2
  3. 3
  4. Нет ограничений

Ответ: D. Нет ограничений на количество групп и подгрупп, которые могут быть сформированы.

65. Выберите правильные утверждения о предложении HAVING.

  1. Предложение HAVING является необязательным предложением в инструкции SELECT.
  2. Предложение HAVING является обязательным, если инструкция SELECT использует предложение GROUP BY.
  3. Предложение HAVING может появиться в операторе SELECT, только если оно использует предложение GROUP BY.
  4. Предложение HAVING является обязательным, если инструкция SELECT использует предложение GROUP BY.

Ответ: A, C. Предложение HAVING может появляться в запросе только в том случае, если присутствует предложение GROUP BY, но, наоборот, неверно.

66. Каковы результаты запроса ниже.

SELECT count(*) FROM dual GROUP BY dummy;
  1. 1
  2. 0
  3. НОЛЬ
  4. Выдает ошибку, потому что групповые функции не могут быть применены к таблице DUAL.

Ответ: A. Таблица DUAL содержит один столбец DUMMY типа CHAR (1) со значением «X».

Исходя из сценария ниже, ответьте на вопрос с 67 по 74.

В организации работают 14 сотрудников, которые работают с фиксированной зарплатой в 1000 человек. Компания набирает 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. Каковы результаты запроса ниже?

SELECT SUM (salary ) FROM employees ;
  1. НОЛЬ
  2. 14 000
  3. 19000
  4. 0

Ответ: B. Функция SUM добавляет зарплату сотрудникам.

68. Каковы результаты запроса ниже?

SELECT AVG (salary ) FROM employees ;
  1. 1000
  2. 736,84
  3. НОЛЬ
  4. 0

Ответ: A. Функция AVG (зарплата) вычисляет среднее значение зарплаты и игнорирует значения NULL. В этом случае AVG (зарплата) = (14 * 1000) / 14 = 1000.

69. Каковы результаты запроса ниже?

SELECT AVG (nvl(salary ,0)) FROM employees ;
  1. 1000
  2. НОЛЬ
  3. 736,84
  4. 0

Ответ: C. AVG (NVL (оклад, 0)) дает альтернативное значение NULL и позволяет им участвовать в вычислении среднего. В этом случае (14 * 1000) / 19 = 736,84.

70. Каковы результаты запроса ниже?

SELECT VARIANCE (salary ) FROM employees ;
  1. 1000
  2. 0
  3. НОЛЬ
  4. 204678,36

Ответ: B. VARIANCE (зарплата) рассчитывает дисперсию значений столбца зарплаты, игнорируя NULL.

71. Каковы результаты запроса ниже?

SELECT VARIANCE (nvl(salary ,0)) FROM employees ;
  1. 1000
  2. 0
  3. НОЛЬ
  4. 204678,36

Ответ: D. VARIANCE (NL (salary, 0)) вычисляет дисперсию значений столбца зарплаты, включая NULL.

72. Каковы результаты запроса ниже?

SELECT STDDEV (salary ) FROM employees ;
  1. 1
  2. 1000
  3. 0
  4. НОЛЬ

Ответ: C. STDDEV (зарплата) вычисляет стандартное отклонение значений столбца зарплаты, игнорируя значения NULL.

73. Каковы результаты запроса ниже?

SELECT STDDEV (nvl(salary ,0)) FROM employees ;
  1. 0
  2. 452,41
  3. 1000
  4. НОЛЬ

Ответ: B. STDDEV (nvl (salary, 0)) вычисляет стандартное отклонение значений столбца зарплаты, включая NULL.

74. Каковы результаты запроса ниже?

выберите количество (*), количество (зарплата) от сотрудников;

  1. 19,19
  2. 14,19
  3. 19,14
  4. 14,14

Ответ: C. COUNT (*) содержит значения NULL, а COUNT (зарплата) игнорирует значения NULL.

75. Изучите структуру таблицы как дано.

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 сотрудников?

  1. SELECT department_id  FROM employees  WHERE COUNT(*) > 5 GROUP BY department_id ;
  2. SELECT department_id  FROM employees  HAVING COUNT(*) > 5;
  3. SELECT department_id  FROM employees  GROUP BY employee_id  HAVING COUNT(*) > 5;
  4. SELECT department_id  FROM employees  GROUP BY department_id  HAVING COUNT(*) > 5;

Ответ: Д.

76. Что из перечисленного верно для расширения CUBE в GROUP BY?

  1. Позволяет выполнять несколько предложений GROUP BY одним запросом.
  2. Выполняет агрегацию для всех возможных комбинаций включенных столбцов.
  3. Выполняет увеличение уровней совокупных промежуточных итогов на основе предоставленного списка столбцов.
  4. Ни один из вышеперечисленных

Ответ: B. CUBE, ROLLUP — это расширения GROUP BY, используемые для обработки OLAP. CUBE агрегирует результаты всякий раз, когда формируется новая перестановка столбцов.

Используйте следующее утверждение SELECT, чтобы ответить на приведенные ниже вопросы с 77 по 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. Какая строка оператора SELECT используется для ограничения количества записей, обрабатываемых запросом?

  1. 1
  2. 3
  3. 4
  4. 5

Ответ: B. Предложение WHERE используется для ограничения строк до формирования групп.

78. Какая строка оператора SELECT используется для ограничения групп, отображаемых в результатах запроса?

  1. 1
  2. 3
  3. 4
  4. 5

Ответ: D. HAVING используется для ограничения результатов группы после окончания обработки группы.

79. Какая строка оператора SELECT используется для группировки данных, хранящихся в базе данных?

  1. 1
  2. 3
  3. 4
  4. 5

Ответ: C. Предложение GROUP BY использует группирование по столбцам для группировки данных в таблице.

80. Какое условие должно быть включено для успешного выполнения запроса?

  1. 1
  2. 3
  3. 4
  4. 5

Ответ: C. Поскольку предложение SELECT содержит столбец CUSTOMER #, обязательно иметь предложение GROUP BY со столбцом CUSTOMER #.

81. Какова цель использования COUNT (*) в запросе SELECT?

  1. Количество записей в указанных таблицах
  2. Количество заказов, размещенных каждым клиентом
  3. Количество значений NULL в указанных таблицах
  4. Количество клиентов, разместивших заказ

Ответ: B. Подсчитывает количество строк, обрабатываемых в группе. В этом случае группа формируется клиентом, и COUNT (*) считает заказы, сделанные каждым клиентом.

82. Какую из следующих функций можно использовать для определения самой ранней даты отгрузки для всех заказов, недавно обработанных JustLee Books?

  1. Функция COUNT
  2. Макс функция
  3. Функция MIN
  4. Функция STDDEV

Ответ: функция C. MIN используется для получения наименьшего значения столбца. При использовании со столбцами даты он выбирает минимальную дату из столбца.

83. Что из перечисленного не является допустимым оператором SELECT?

  1. SELECT STDDEV(retail) FROM books;
  2. SELECT AVG(SUM(retail)) FROM orders NATURAL JOIN orderitems NATURAL JOIN books GROUP BY customer#;
  3. SELECT order#, TO_CHAR(SUM(retail),'999.99') FROM orderitems JOIN books USING (isbn) GROUP BY order#;
  4. SELECT title, VARIANCE(retail-cost) FROM books GROUP BY pubid;

Ответ: D. Предложение GROUP BY должно указывать столбец или набор столбцов, содержащихся в предложении SELECT. Здесь PUBID не содержится в предложении SELECT, следовательно, запрос недействителен.

84. Какие из приведенных ниже утверждений верны в отношении вложенности групповых функций?

  1. Самая внутренняя функция решается первой.
  2. Oracle позволяет вкладывать групповые функции до 3-х уровней.
  3. Однорядные функции могут быть вложены в групповые функции.
  4. Oracle позволяет вложить групповые функции до 2 уровней.

Ответ: A, C, D. В выражении, содержащем вложенные функции, сначала выполняется самая внутренняя функция, результат которой передается следующей функции, движущейся в направлении наружу. Однорядные функции могут быть хорошо использованы с групповыми функциями, которые могут быть максимально вложенными до 2 уровней.

85. Каковы функции статистической группы в Oracle?

  1. AVG
  2. STDDEV
  3. VARIANCE
  4. СТАТИСТИКА

Ответ: B, C. VARIANCE и STATS — это статистические групповые функции, доступные в Oracle SQL.

86. Если список SELECT содержит столбец и групповые функции, какое из следующего пункта должно быть обязательно включено?

  1. СОРТИРОВАТЬ ПО
  2. HAVING
  3. ГРУППА ПО
  4. Ни один из них

Ответ: C. Предложение GROUP BY обязательно должно содержать столбец или набор столбцов, содержащихся в предложении SELECT.

87. Изучите структуру таблицы как дано.

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;
  1. Заработная плата не может быть усреднена, так как не все цифры будут делиться равномерно.
  2. Вы не можете использовать псевдоним столбца в предложении GROUP BY.
  3. В предложении GROUP BY должно быть что-то для GROUP.
  4. Идентификатор отдела не указан в таблице отделов.

Ответ: B. Ни предложение GROUP BY, ни предложение HAVING не работают с псевдонимом столбца.

88. Какие из следующих типов данных совместимы с функциями AVG, SUM, VARIANCE и STDDEV?

  1. Только числовые типы данных
  2. Только целые числа
  3. Любой тип данных
  4. Все, кроме числовых

Ответ: A. Функции AVG, SUM, VARIANCE и STDDEV обязательно работают только с числовым типом данных.

Изучите структуру таблицы, приведенную ниже, и ответьте на следующие вопросы 89 и 90.

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. Какой из приведенных ниже запросов будет отображать количество отдельных категорий должностей, работающих в каждом отделе?

  1. SELECT department_id , COUNT(DISTINCT job) FROM employees  GROUP BY job;
  2. SELECT department_id , COUNT(job) FROM employees  GROUP BY employee_id ;
  3. SELECT department_id , COUNT(job) FROM employees  GROUP BY department_id ;
  4. SELECT department_id , COUNT(DISTINCT job) FROM employees  GROUP BY department_id ;

Ответ: D. Используйте модификатор DISTINCT, чтобы отфильтровать дубликаты.

90. Оцените этот оператор SQL:

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;

Почему это утверждение приведет к ошибке?

  1. Предложение HAVING отсутствует.
  2. Предложение WHERE содержит синтаксическую ошибку.
  3. Столбец SALARY НЕ включен в предложение GROUP BY.
  4. Столбец HIRE_DATE НЕ включен в предложение GROUP BY.

Ответ: D. Все столбцы, встречающиеся в предложениях SELECT и ORDER BY, должны быть включены в предложение GROUP BY.

91. Какое из следующих утверждений верно в отношении предложения GROUP BY?

  1. Чтобы исключить строки перед разделением их на группы с помощью предложения GROUP BY, следует использовать предложение WHERE.
  2. Вы должны использовать предложение HAVING с предложением GROUP BY.
  3. Псевдоним столбца может использоваться в предложении GROUP BY.
  4. По умолчанию строки не сортируются при использовании предложения GROUP BY.

Ответ: A. Используя предложение WHERE, вы можете исключить строки перед их разделением на группы.

92. Изучите структуру таблицы как дано.

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 ;
  1. Самая ранняя дата приема на работу в организации.
  2. Последняя дата приема на работу в организации.
  3. Самая ранняя дата приема на работу в отдел.
  4. Последняя дата приема на работу в отдел.

Ответ: C. Запрос возвращает самого раннего наемного сотрудника в каждом отделе.

93. Какое утверждение о групповых функциях верно?

  1. Групповые функции, кроме COUNT (*), игнорируют нулевые значения.
  2. Запрос, включающий групповую функцию в список SELECT, должен включать предложение GROUP BY.
  3. Групповые функции можно использовать в предложении WHERE.
  4. Групповые функции можно использовать только в списке SELECT.

Ответ: A. Все групповые функции, кроме COUNT (*), игнорируют значения NULL. Это потому, что они обрабатывают значения, непосредственно содержащиеся в определенном столбце.

94. Какие из следующих пунктов представляют допустимое использование групповых функций?

  1. GROUP BY MAX (зарплата)
  2. ЗАКАЗАТЬ AVG (зарплата)
  3. МАКСИМАЛЬНАЯ (зарплата)> 10000
  4. SELECT AVG (NVL (зарплата, 0))

Ответ: B, C, D. Групповые функции могут появляться только в предложениях SELECT, HAVING и ORDER BY.

95. Какие из следующих утверждений верны в отношении предложения GROUP BY?

  1. Последний столбец, указанный в предложении GROUP BY, является наиболее важной группой.
  2. The first column listed in the GROUP BY clause is the most major grouping.
  3. A GROUP BY clause cannot be used without an ORDER BY clause.
  4. The GROUP BY clause do not ensure the sorting of output.

Answer: B. The grouping of data is based on the sequence of columns appearing in the GROUP BY clause.

96. What is difference between WHERE clause and HAVING clause?

  1. WHERE clause restrict rows before grouping while HAVING clause restricts groups.
  2. WHERE clause cannot contain a group function but HAVING clause can have.
  3. WHERE clause can join multiple conditions using AND or OR operators but HAVING clause cannot.
  4. WHERE clause can appear in SELECT query without GROUP BY clause but HAVING clause cannot.

Answer: A, B, D. WHERE clause restricts the rows before grouping but HAVING restricts the groups.

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)

Predict the outcome of the below query.

SELECT department_id ,job,count(*)
FROM employees 
GROUP BY department_id ,job
ORDER BY department_id ,count(*);
  1. Это выполняется успешно.
  2. It throws error because ORDER BY clause is invalid.
  3. It throws error because GROUP BY clause is invalid.
  4. It throws error because GROUP BY and ORDER BY clause cannot be used together.

Answer: A. ORDER BY clause can use the group functions for sorting.