Главная / Базы данных /
Введение в Oracle SQL / Тест 6
Введение в Oracle SQL - тест 6
Упражнение 1:
Номер 1
Дана таблица WORK, в которой содержится информация о сотрудниках компании:
WORKNO | Номер сотрудника |
WNAME | Фамилия |
MGR | Номер начальника |
Необходимо вычислить общее количество начальников, без вывода информации о них, с учетом того, что у начальника может быть несколько подчиненных, и некоторые сотрудники не имеют начальника. Поставленную задачу выполнит запрос:
Ответ:
 (1) SELECT COUNT(*) FROM work
WHERE mgr IS NOT NULL; 
 (2) SELECT COUNT(DISTINCT mgr) FROM work
WHERE mgr IS NOT NULL; 
 (3) SELECT COUNT(DISTINCT *) FROM work; 
 (4) SELECT COUNT(mgr) FROM work; 
Номер 2
Запрос SQL:1 SELECT *
2 FROM students s, classes c
3 WHERE s.id = c.student_id
4 AND c.category IN
5 (SELECT type FROM courses WHERE level > 3)
6 ORDER BY s.last_name, c.number;
Для изменения порядка следования столбцов в итоговой выборке, в запросе должна быть изменена строка ...
Ответ:
 (1) 2 
 (2) 3 
 (3) 4 
 (4) 5 
 (5) 6 
Номер 3
Необходимо вычислить разницу между самой низкой и самой высокой зарплатами сотрудников (столбец SALARY таблицы EMP). Поставленную задачу выполнит запрос:
Ответ:
 (1) SELECT MAX(salary) + MIN(salary) FROM emp;
 
 (2) SELECT BETWEEN MAX(salary) AND MIN(salary) FROM emp;
 
 (3) SELECT MAX(salary) - MIN(salary) FROM emp;
 
 (4) SELECT MAX(salary) / MIN(salary) FROM emp;
 
Упражнение 2:
Номер 1
Запрос SQL:SELECT COUNT(title)
FROM books
WHERE genre = 'Horror' AND title IS NULL;
Данный запрос является некорректным способом вычисления количества строк таблицы "books», в которых пропущены наименования книг указанного жанра, по причине того, что ...
Ответ:
 (1) функция COUNT(title)
не принимает во внимание строки, в которых значение столбца "title» пусто 
 (2) правильным синтаксисом последней строки запроса является запись: HAVING title IS NULL
 
 (3) правильным синтаксисом последней строки запроса является запись: HAVING NULL title
 
 (4) данный запрос никогда не возвратит значение > 1, т.к. функция COUNT(title)
учитывает только уникальные значения 
 (5) все условия в предложении WHERE
необходимо отменить, иначе все наименования жанра 'Horror' (пустые и непустые) будут учитываться функцией COUNT
 
Номер 2
Дана таблица:
EMPENAME | SAL | DEPTNO |
---|
Blake | 2750 | 30 |
King | 5000 | 10 |
Clark | 2450 | 10 |
Martin | 1250 | 30 |
Запрос SQL:
SELECT NVL(MAX(sal),0)
FROM emp
WHERE ename = 'Blake' AND deptno = 10;
Результат выполнения запроса:
Ответ:
 (1) 0 
 (2) 5000 
 (3) 2750 
 (4) ошибка 
Номер 3
Запрос SQL:SELECT COUNT(title)
FROM books
WHERE genre = 'Horror';
Верное описание результата действия запроса: возвращение ...
Ответ:
 (1) уникальных наименований книг жанра "Horror" с учетом пустых значений 
 (2) уникальных наименований книг жанра "Horror" без учета пустых значений 
 (3) наименований книг жанра "Horror" 
 (4) количества наименований книг жанра "Horror" 
Упражнение 3:
Номер 1
Даны таблицы:
ANIMALSFAMILY | NAME |
---|
mammal | dog |
mammal | lion |
fish | guppy |
bird | eagle |
fish | guppy |
bird | pelican |
fish | NULL |
BLOOD_TYPESFAMILY | BLOOD_TYPE |
---|
mammal | warm_blooded |
fish | cold_blooded |
bird | cold_blooded |
Запрос SQL:
SELECT COUNT(DISTINCT name)
FROM animals
WHERE family = ANY (SELECT family
FROM blood_types
WHERE blood_type NOT LIKE ('warm%'));
Количество строк, возвращенных запросом, = ...
Ответ:
 (1) 1 
 (2) 2 
 (3) 3 
 (4) 4 
 (5) 5 
Номер 2
Даны таблицы:
ANIMALSFAMILY | NAME |
---|
mammal | dog |
mammal | lion |
fish | guppy |
bird | eagle |
fish | guppy |
bird | pelican |
fish | NULL |
BLOOD_TYPESFAMILY | BLOOD_TYPE |
---|
mammal | warm_blooded |
fish | cold_blooded |
bird | cold_blooded |
Запрос SQL:
SELECT COUNT(DISTINCT name)
FROM animals
WHERE family = ANY (SELECT family
FROM blood_types
WHERE blood_type LIKE ('warm%'));
Значение, возвращенное запросом, = ...
Ответ:
 (1) 1 
 (2) 2 
 (3) 3 
 (4) 4 
 (5) 5 
Номер 3
Даны таблицы:
ANIMALSFAMILY | NAME |
---|
mammal | dog |
mammal | lion |
fish | guppy |
bird | eagle |
fish | guppy |
bird | pelican |
fish | NULL |
BLOOD_TYPESFAMILY | BLOOD_TYPE |
---|
mammal | warm_blooded |
fish | cold_blooded |
bird | cold_blooded |
Запрос SQL:
SELECT COUNT(name)
FROM animals
WHERE family <> ALL (SELECT family
FROM blood_types
WHERE blood_type LIKE ('warm%'));
Значение, возвращенное запросом, = ...
Ответ:
 (1) 1 
 (2) 2 
 (3) 3 
 (4) 4 
 (5) 5 
Упражнение 4:
Номер 1
Дана таблица:
COMBOSID | A | B | C |
---|
1 | cat | NULL | dog |
2 | lion | dog | NULL |
3 | NULL | bird | ferret |
4 | lynx | ant | bat |
5 | fly | bee | beetle |
6 | fish | fish | cricket |
Запрос SQL:
SELECT MAX(a), MIN(b), MAX(C) FROM COMBOS; Результат выполнения запроса:
Ответ:
 (1) lynx NULL ferret 
 (2) lynx fish ferret 
 (3) lynx ant ferret 
 (4) сообщение об ошибке 
 (5) lynx bee lion 
Номер 2
Дана таблица:
COMBOSID | A | B | C |
---|
1 | cat | NULL | dog |
2 | lion | dog | NULL |
3 | NULL | bird | ferret |
4 | lynx | ant | bat |
5 | fly | bee | beetle |
6 | fish | fish | cricket |
Запрос SQL:
SELECT MAX(a), COUNT(b), MIN(C) FROM COMBOS; Результат выполнения запроса:
Ответ:
 (1) lynx NULL ferret 
 (2) lynx 5 bat 
 (3) lynx 0 ferret 
 (4) сообщение об ошибке 
 (5) lynx bee lion 
Номер 3
Дана таблица:
COMBOSID | A | B | C |
---|
1 | cat | NULL | dog |
2 | lion | dog | NULL |
3 | NULL | bird | ferret |
4 | lynx | ant | bat |
5 | fly | bee | beetle |
6 | fish | fish | cricket |
Запрос SQL:
SELECT MAX(a), VARIANCE(b), MIN(C) FROM COMBOS; Результат выполнения запроса:
Ответ:
 (1) lynx NULL ferret 
 (2) lynx 5 bat 
 (3) lynx 0 ferret 
 (4) сообщение об ошибке 
 (5) lynx bee lion 
Упражнение 5:
Номер 1
Таблица MATH_101 содержит информацию об успеваемости студентов группы:
MATH_101LAST_NAME | HIGH_GRADE | LOW_GRADE |
---|
Masters | 98 | 92 |
Bludget | 90 | 74 |
Banderos | 91 | 65 |
Kosmel | 85 | 81 |
Trimple | 90 | 64 |
Anderson | 93 | 79 |
Запрос SQL:
SELECT last_name, high_grade, RANK() OVER (ORDER BY high_grade DESC) AS "Analytic function"
FROM math_101;Результат выполнения команды - ...
Ответ:
 (1) получение оценки взаимозависимости в столбцах LOW_GRADE и HIGH_GRADE  
 (2) вывод разницы между наивысшими баллами студента и его предшественника в алфавитном списке 
 (3) вывод рейтингового номера студента в зависимости от его успеваемости 
 (4) вычисление процента успеваемости студента 
Номер 2
Таблица MATH_101 содержит информацию об успеваемости студентов группы:
MATH_101LAST_NAME | HIGH_GRADE | LOW_GRADE |
---|
Masters | 98 | 92 |
Bludget | 90 | 74 |
Banderos | 91 | 65 |
Kosmel | 85 | 81 |
Trimple | 90 | 64 |
Anderson | 93 | 79 |
Запрос SQL:
SELECT REGR_AVGX(high_grade, low_grade) AS "Analytic function",
REGR_AVGY(high_grade, low_grade) AS "Analytic function",
REGR_SLOPE(high_grade, low_grade) AS "Analytic function"
FROM math_101;Результат выполнения команды - ...
Ответ:
 (1) получение оценки взаимозависимости в столбцах LOW_GRADE и HIGH_GRADE  
 (2) вывод разницы между наивысшими баллами студента и его предшественника в алфавитном списке 
 (3) вывод рейтингового номера студента в зависимости от его успеваемости 
 (4) вычисление процента успеваемости студента 
Номер 3
Таблица MATH_101 содержит информацию об успеваемости студентов группы:
MATH_101LAST_NAME | HIGH_GRADE | LOW_GRADE |
---|
Masters | 98 | 92 |
Bludget | 90 | 74 |
Banderos | 91 | 65 |
Kosmel | 85 | 81 |
Trimple | 90 | 64 |
Anderson | 93 | 79 |
Запрос SQL:
SELECT last_name, high_grade, high_grade-lag(high_grade,1) OVER (ORDER BY last_name) AS "Analytic function"
FROM math_101; Результат выполнения команды - ...
Ответ:
 (1) получение оценки взаимозависимости в столбцах LOW_GRADE и HIGH_GRADE  
 (2) вывод разницы между наивысшими баллами студента и его предшественника в алфавитном списке 
 (3) вывод рейтингового номера студента в зависимости от его успеваемости 
 (4) вычисление процента успеваемости студента 
Упражнение 6:
Номер 1
Дана таблица:
VTABLEA | B | C |
---|
4 | 5 | 1 |
5 | 2 | 6 |
1 | 9 | 4 |
2 | 12 | 20 |
8 | 10 | 4 |
12 | 0 | 9 |
Необходимо установить номер строки в порядке возрастания значения в столбце "a". Поставленную задачу выполнит запрос:
Ответ:
 (1) SELECT a, b, c, RATIO_TO_REPORT (b) OVER () AS "Analytic function"
FROM vtable; 
 (2) SELECT a, b, c, b - LAG(b,1) OVER (ORDER BY b) AS "Analytic function"
FROM vtable; 
 (3) SELECT a, b, c, ROW_NUMBER () OVER (ORDER BY a) AS "Analytic function"
FROM vtable; 
 (4) SELECT a, b, c, SUM(c) OVER (ORDER BY с
RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT_ROW) AS "Analytic function"
FROM vtable; 
Номер 2
Дана таблица:
VTABLEA | B | C |
---|
4 | 5 | 1 |
5 | 2 | 6 |
1 | 9 | 4 |
2 | 12 | 20 |
8 | 10 | 4 |
12 | 0 | 9 |
Необходимо вычислить сумму значений в столбце "с" нарастающим итогом. Поставленную задачу выполнит запрос:
Ответ:
 (1) SELECT a, b, c, RATIO_TO_REPORT (B) OVER () AS "Analytic function"
FROM vtable; 
 (2) SELECT a, b, c, b - LAG(b,1) OVER (ORDER BY b) AS "Analytic function"
FROM vtable; 
 (3) SELECT a, b, c, ROW_NUMBER () OVER (ORDER BY a) AS "Analytic function"
FROM vtable; 
 (4) SELECT a, b, c, SUM(c) OVER (ORDER BY с
RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT_ROW) AS "Analytic function"
FROM vtable; 
Номер 3
Дана таблица:
VTABLEA | B | C |
---|
4 | 5 | 1 |
5 | 2 | 6 |
1 | 9 | 4 |
2 | 12 | 20 |
8 | 10 | 4 |
12 | 0 | 9 |
Необходимо вычислить долю значения в столбце "b" в общей сумме значений столбца. Поставленную задачу выполнит запрос:
Ответ:
 (1) SELECT a, b, c, RATIO_TO_REPORT (B) OVER () AS "Analytic function"
FROM vtable; 
 (2) SELECT a, b, c, b - LAG(b,1) OVER (ORDER BY b) AS "Analytic function"
FROM vtable; 
 (3) SELECT a, b, c, ROW_NUMBER () OVER (ORDER BY a) AS "Analytic function"
FROM vtable; 
 (4) SELECT a, b, c, SUM(c) OVER (ORDER BY с
RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT_ROW) AS "Analytic function"
FROM vtable; 
Упражнение 7:
Номер 1
Групповые функции, работающие со всеми типами данных:
Ответ:
 (1) SUM
 
 (2) MAX
 
 (3) MIN
 
 (4) AVG
 
 (5) COUNT
 
 (6) VARIANCE
 
Номер 2
Групповые функции, работающие только с числовыми типами данных:
Ответ:
 (1) SUM
 
 (2) MAX
 
 (3) MIN
 
 (4) AVG
 
 (5) COUNT
 
 (6) VARIANCE
 
Номер 3
Групповые функции, которые, при добавлении аргумента (*), учитывают пустые значения при вычислении результата:
Ответ:
 (1) SUM
 
 (2) MAX
 
 (3) MIN
 
 (4) AVG
 
 (5) COUNT
 
 (6) VARIANCE
 
Упражнение 8:
Номер 1
Дана таблица S_EMP, в которой содержится информация о сотрудниках компании:
ID | Номер сотрудника | PRIMARY KEY |
LAST_NAME | Фамилия | NOT NULL |
TITLE | Должность | NOT NULL |
MANAGER_ID | Номер начальника | |
SALARY | Зарплата | NOT NULL |
START_DATE | Дата начала работы | NOT NULL |
Необходимо получить информацию о сотруднике, который принят на работу позже остальных. Запрос, который выполняет поставленную задачу:
Ответ:
 (1) SELECT * FROM s_emp
WHERE start_date = MIN(start_date); 
 (2) SELECT * FROM s_emp
WHERE start_date = MAX(start_date); 
 (3) SELECT * FROM s_emp
WHERE start_date = (SELECT MIN(start_date)
FROM S_EMP); 
 (4) SELECT * FROM s_emp
WHERE start_date = (SELECT MAX(start_date)
FROM S_EMP); 
Номер 2
Дана таблица S_EMP, в которой содержится информация о сотрудниках компании:
ID | Номер сотрудника | PRIMARY KEY |
LAST_NAME | Фамилия | NOT NULL |
TITLE | Должность | NOT NULL |
MANAGER_ID | Номер начальника | |
SALARY | Зарплата | NOT NULL |
START_DATE | Дата начала работы | NOT NULL |
Необходимо получить информацию о сотруднике, который получает наименьшую зарплату. Запрос, который выполняет поставленную задачу:
Ответ:
 (1) SELECT * FROM s_emp
WHERE salary = MIN(salary); 
 (2) SELECT * FROM s_emp
WHERE <= ALL(salary); 
 (3) SELECT * FROM s_emp
WHERE salary = (SELECT MIN(salary)
FROM S_EMP); 
 (4) SELECT * FROM s_emp
WHERE <= SOME(salary); 
Номер 3
Дана таблица S_EMP, в которой содержится информация о сотрудниках компании:
ID | Номер сотрудника | PRIMARY KEY |
LAST_NAME | Фамилия | NOT NULL |
TITLE | Должность | NOT NULL |
MANAGER_ID | Номер начальника | |
SALARY | Зарплата | NOT NULL |
START_DATE | Дата начала работы | NOT NULL |
Необходимо вычислить количество месяцев между самой ранней и самой поздней датами приема на работу сотрудников. Запрос, который выполняет поставленную задачу:
Ответ:
 (1) SELECT MONTHS_BETWEEN(MAX(start_date), MIN(start_date)) FROM s_emp; 
 (2) SELECT MONTH_BETWEEN(MAX(start_date), MIN(start_date)) FROM s_emp; 
 (3) SELECT * FROM s_emp
WHERE start_date BETWEEN MAX(start_date) AND MIN(start_date); 
 (4) SELECT * FROM s_emp
WHERE MONTHS_BETWEEN(MAX(start_date), MIN(start_date)); 
Упражнение 9:
Номер 1
Назначение ключевого слова DISTINCT в списке выборки:
Ответ:
 (1) определение повторяющихся строк в таблице 
 (2) определение столбца, в котором все значения уникальны 
 (3) исключение повторяющихся столбцов в таблице 
 (4) исключение повторяющихся строк в результате выборки 
Номер 2
Определить, какой из перечисленных вариантов наиболее приемлем для того, чтобы запрос к таблице с уникальным ключом возвращал только одну строку.
Ответ:
 (1) размещение столбца уникального ключа первым в списке SELECT  
 (2) размещение ключевого слова DISTINCT после ключевого слова SELECT 
 (3) размещение ключевого слова UNIQUE после ключевого слова SELECT 
 (4) задание в предложении WHERE определенного значения для ключевого столбца 
 (5) добавление функции COUNT(1)
в предложение WHERE 
Номер 3
Эквивалент ключевого слова DISTINCT в качестве опции исключения повторяющихся значений для групповой функции:
Ответ:
 (1) UNIQUE 
 (2) ALL 
 (3) ANY 
 (4) SOME 
 (5) * 
Упражнение 10:
Номер 1
Дана таблица:
VTABLECOLUMN NAME | NULL/NOT NULL | DATATYPE |
---|
a | null | char(5) |
b | not null | number(5) |
c | not null | char(20) |
Запрос SQL:
SELECT DISTINCT a FROM vtable;В столбце "а» таблицы "vtable» содержатся 2 значения 'Blue', 1 значение 'Red', 4 значения 'White' и 3 пустых значения. Количество строк, возвращенных запросом, = ...
Ответ:
 (1) 3 
 (2) 4 
 (3) 7 
 (4) 8 
 (5) 10 
Номер 2
Дана таблица:
VTABLECOLUMN NAME | NULL/NOT NULL | DATATYPE |
---|
a | null | char(5) |
b | not null | number(5) |
c | not null | char(20) |
Необходимо вычислить среднее арифметическое среди уникальных значений столбцa "b» таблицы "vtable». Поставленную задачу выполнит запрос:
Ответ:
 (1) SELECT AVG(b) FROM vtable;
 
 (2) SELECT DISTINCT AVG(b) FROM vtable;
 
 (3) SELECT UNIQUE AVG(b) FROM vtable;
 
 (4) SELECT AVG(DISTINCT b) FROM vtable;
 
 (5) SELECT AVG(UNIQUE b) FROM vtable;
 
Номер 3
Дана таблица:
VTABLECOLUMN NAME | NULL/NOT NULL | DATATYPE |
---|
a | null | char(5) |
b | not null | number(5) |
c | not null | char(20) |
Необходимо вычислить среднее арифметическое среди уникальных значений столбцa "с» таблицы "vtable». Поставленную задачу выполнит запрос:
Ответ:
 (1) SELECT AVG(c) FROM vtable;
 
 (2) SELECT DISTINCT AVG(c) FROM vtable;
 
 (3) SELECT UNIQUE AVG(c) FROM vtable;
 
 (4) SELECT AVG(DISTINCT c) FROM vtable;
 
 (5) SELECT AVG(UNIQUE c) FROM vtable;
 
Упражнение 11:
Номер 1
Дана таблица EMP, в которой содержится информация о сотрудниках компании:
ID | Номер сотрудника | PRIMARY KEY |
LAST_NAME | Фамилия | NOT NULL |
TITLE | Должность | NOT NULL |
DEPT_ID | Номер отдела | NOT NULL |
SALARY | Зарплата | NOT NULL |
START_DATE | Дата начала работы | NOT NULL |
Необходимо получить выборку с указанием должности и количества сотрудников, работающих в этой должности в каждом из отделов № 11, 21, 31, 41. Структура требуемой выборки: (TITLE, 11, 21, 31, 41). Поставленную задачу выполнит запрос:
Ответ:
 (1) SELECT *
FROM (SELECT title, dept_id FROM emp)
PIVOT (COUNT(*) FOR dept_id IN (11, 21, 31, 41)); 
 (2) SELECT *
FROM (SELECT title, dept_id FROM emp)
UNPIVOT (COUNT(*) FOR dept_id IN (11, 21, 31, 41)); 
 (3) SELECT *
FROM (SELECT title, dept_id FROM emp)
CURSOR (COUNT(*) FOR dept_id IN (11, 21, 31, 41)); 
 (4) SELECT *
FROM (SELECT title, dept_id FROM emp)
CASE (COUNT(*) FOR dept_id IN (11, 21, 31, 41)); 
Номер 2
Опция PIVOT команды SELECT выполняет ...
Ответ:
 (1) сворачивание данных нескольких столбцов в выборке в один столбец 
 (2) разворачивание данных одного столбца в выборке в несколько столбцов 
 (3) указание ссылки на курсор SQL в команде SELECT 
 (4) задание критерия для построения иерархической выборки командой SELECT 
Номер 3
Запрос SQL: SELECT *
FROM (SELECT title, dept_id FROM emp)
PIVOT (COUNT(*) FOR dept_id IN (11, 21, 31, 41));Результаты, эквивалентные выборке данного запроса, возвращают команды:
Ответ:
 (1) SELECT title,
COUNT (CASE WHEN dept_id = 11 THEN 1 END) "11",
COUNT (CASE WHEN dept_id = 21 THEN 1 END) "21",
COUNT (CASE WHEN dept_id = 31 THEN 1 END) "31",
COUNT (CASE WHEN dept_id = 41 THEN 1 END) "41"
FROM (SELECT title, dept_id FROM emp)
GROUP BY title; 
 (2) SELECT title,
COUNT (IF dept_id = 11 THEN 1 END) "11",
COUNT (IF dept_id = 21 THEN 1 END) "21",
COUNT (IF dept_id = 31 THEN 1 END) "31",
COUNT (IF dept_id = 41 THEN 1 END) "41"
FROM (SELECT title, dept_id FROM emp)
GROUP BY title; 
 (3) SELECT title,
COUNT (FOR dept_id = 11 THEN 1 END) "11",
COUNT (FOR dept_id = 21 THEN 1 END) "21",
COUNT (FOR dept_id = 31 THEN 1 END) "31",
COUNT (FOR dept_id = 41 THEN 1 END) "41"
FROM (SELECT title, dept_id FROM emp)
GROUP BY title; 
 (4) SELECT title,
COUNT (DECODE(dept_id, 11, 1, 0)) "11",
COUNT (DECODE(dept_id, 21, 1, 0)) "21",
COUNT (DECODE(dept_id, 31, 1, 0)) "31",
COUNT (DECODE(dept_id, 41, 1, 0)) "41"
FROM (SELECT title, dept_id FROM emp)
GROUP BY title; 
Упражнение 12:
Номер 1
Предложения SQL, в которых допустимо использование аналитических функций:
Ответ:
 (1) SELECT
 
 (2) FROM
 
 (3) WHERE
 
 (4) HAVING
 
 (5) GROUP BY
 
 (6) ORDER BY
 
Номер 2
Аналитическими функциями Oracle 11g являются:
Ответ:
 (1) ROWNUM
 
 (2) ROW_NUMBER
 
 (3) ROWID
 
 (4) DENSE_RANK
 
 (5) LAG
 
Номер 3
Статистические аналитические функции Oracle возможно использовать для ...
Ответ:
 (1) расчета доли зарплаты сотрудника в общей сумме зарплат всех сотрудников 
 (2) вычисления итоговых сумм нарастающим итогом 
 (3) оценки взаимозависимости значений в столбцах 
 (4) выполнения сравнений с использованием объектных данных 
 (5) вычисления аггрегированных значений для символьных строк