|:---:|:------:|
||Пройден|
|
|Не пройден или не соответствует синтаксису MySQL 5.7||
Номер | Категория | Заголовок | Подтверждение |
---|---|---|---|
1 | Фильтрация | [Найти все данные о сотрудниках с самым поздним днём приема] | ![]() |
2 | Фильтрация | [Найти всех сотрудников, чьё время приема находится на третьем месте с конца] | ![]() |
3 | Соединение | [Найти текущие детали заработной платы и номер отдела dept_no] | ![]() |
4 | Соединение | [Найти last_name и first_name всех сотрудников, которым уже назначен отдел] | ![]() |
5 | Соединение | [Найти last_name и first_name всех сотрудников и соответствующий им номер отдела dept_no] | ![]() |
6 | Соединение | [Найти информацию о начальной зарплате при найме всех сотрудников] | ![]() |
7 | Группировка | [Найти номер сотрудника emp_no и количество повышений зарплаты t, превышающее 15] | ![]() |
8 | Фильтрация | [Найти текущую зарплату salary всех сотрудников] | ![]() |
9 | Соединение | [Получить текущую зарплату менеджера для каждого отдела, включая dept_no, emp_no и salary, где to_date = 9999-01-01] | ![]() |
10 | Фильтрация | [Получить список всех сотрудников, которые не являются менеджерами, emp_no] | ![]() |
11 | Соединение | [Получить текущего менеджера для каждого сотрудника] | ![]() |
13 | Группировка и агрегация | [Получить группировку данных по title из таблицы titles] | ![]() |
14 | Группировка и агрегация | [Получить группировку данных по title из таблицы titles] | ![]() |
15 | Фильтрация | [Найти данные из таблицы employees] | ![]() |
16 | Группировка и агрегация | [Подсчитать среднюю зарплату для каждого типа должностей на основе текущей зарплаты] | |
--- | --- | --- | |
17 | Фильтрация | Получение номера сотрудника emp_no с второй по величине текущей зарплатой salary | 😹 |
18 | Соединение | Получение номера сотрудника emp_no с второй по величине текущей зарплатой salary без использования ORDER BY | 😹 |
19 | Соединение | Поиск всех сотрудников last_name и first_name вместе с соответствующими названиями департаментов dept_name | 😹 |
20 | Фильтрация | Поиск номера сотрудника emp_no равного 10001 и его увеличения зарплаты growth с момента найма | 😹 |
22 | Группировка и агрегация | Подсчет количества случаев повышения заработной платы для каждого департамента | 😹 |
23 | Ранг | Распределение рангов всем сотрудникам по зарплате salary от 1 до N | 🙈 |
24 | Соединение | Получение текущих зарплат всех сотрудников, кроме менеджеров | 😹 |
25 | Соединение | Получение информации о сотрудниках, чья текущая зарплата выше зарплаты своего менеджера | 😹 |
26 | Соединение и группировка | Сводка количества распределения типов должностей title для каждого департамента | 😹 |
27 | Соединение | Указание номера сотрудника emp_no для каждого сотрудника, у которого годовой прирост зарплаты превышает 5000 | 🙈 |
29 | Соединение | Используя метод join найти id и название фильмов, не имеющих категорий | ![]() |
30 | Подзапрос | Используйте подзапрос для выявления всех фильмов, относящихся к категории Action, и их title, description | ![]() |
31 | Оптимизация | Получите план выполнения запроса SELECT * FROM employees | ![]() |
32 | Обработка строк | Соедините last_name и first_name всех сотрудников в таблице employees как Name | ![]() |
33 | Действия над таблицами | Создайте таблицу actor со следующими столбцами информации | ![]() |
34 | Действия над данными | Большое количество вставок данных | ![]() |
36 | Действия над таблицами и данными | [Создайте таблицу actor_name](36. Создание таблицы actor_name.md) | ![]() |
37 | Индексы | [Создайте уникальный индекс uniq_idx_firstname для first_name](37. Создание уникального индекса uniq_idx_firstname для first_name.md) | ![]() |
38 | Виды | [Создайте представление actor_name_view для таблицы actor](38. Создание представления actor_name_view для таблицы actor.md) | ![]() |
39 | Индексы | [Создайте индекс idx_emp_no для поля emp_no в таблице salaries](39. Создание индекса idx_emp_no для поля emp_no в таблице salaries.md) | ![]() |
40 | Действия над таблицами | [Добавьте новую колонку create_date после колонки last_update](40. Добавление новой колонки create_date после колонки last_update.md) | ![]() |
41 | Триггеры | [Создайте триггер audit_log](41. Создание триггера audit_log.md) | ![]() |
42 | Действия над данными | [Удалите повторяющиеся записи emp_no, оставив только минимальные id](42. Удаление повторяющихся записей emp_no, оставив только минимальные id.md) | ![]() |
43 | Действия над данными | [Обновите все to_date = '9999-01-01' до NULL](43. Обновление всех to_date = '9999-01-01' до NULL.md) | ![]() |
44 | Действия над данными | [Замените данные строки id=5 и emp_no=10001 на id=5 и emp_no=10005](44. Замена данных строки id=5 и emp_no=10001 на id=5 и emp_no=10005.md) | ![]() |
46 | Внешний ключ | [Создание внешнего ключа в таблице audit, где emp_no соответствует первичному ключу id в таблице employees_test](Создание внешнего ключа в таблице audit.md) | ![]() |
47 | Соединение | [Как получить данные с одинаковым значением no из emp_v и employees](Как получить данные с одинаковым значением no из emp_v и employees.md) | ![]() |
48 | Операции с данными | [Увеличение текущей зарплаты всех сотрудников, получающих премию, на 10%](Увеличение текущей зарплаты всех сотрудников, получающих премию, на 10%.md) | ![]() |
49 | Обработка строк | [Генерация SQL-запросов SELECT COUNT(*) для всех таблиц в базе данных](Генерация SQL-запросов для всех таблиц в базе данных.md) | ![]() |
50 | Обработка строк | [Объединение last_name и first_name всех сотрудников в таблице employees через ('')](Объединение last_name и first_name всех сотрудников в таблице employees через ''.md) | ![]() |
51 | Обработка строк | [Поиск количества вхождений запятой ',' в строке '10,A,B'](Поиск количества вхождений запятой ','.md) | ![]() |
52 | Обработка строк | [Получение имени first_name из таблицы Employees](Получение имени first_name из таблицы Employees.md) | ![]() |
53 | Агрегирующие функции | [Агрегация по dept_no](Агрегация по dept_no.md) | ![]() |
55 | ключевые слова | [Пагинация запроса к таблице employees, 5 строк на страницу, вернуть данные второй страницы](55. Пагинация запроса к таблице employees.md) | ![]() |
56 | соединение | [Получение emp_no всех сотрудников](56. Получение emp_no всех сотрудников.md) | ![]() |
57 | подзапрос | [Использование ключевого слова EXISTS для поиска информации о сотрудниках, не имеющих конкретного отдела](57. Использование ключевого слова EXISTS для поиска информации о сотрудниках, не имеющих конкретного отдела.md) | ![]() |
58 | представление | [Получение строк данных из таблицы employees, которые также содержатся в emp_v](58. Получение строк данных из таблицы employees, которые также содержатся в emp_v.md) | ![]() |
59 | условные выражения | [Получение информации о сотрудниках, получающих премию](59. Получение информации о сотрудниках, получающих премию.md) | ![]() |
60 | повторное использование таблиц | [Статистика суммы зарплат running_total](60. Статистика суммы зарплат running_total.md) | ![]() |
61 | повторное использование таблиц | [Первое имя first_name для нечётных строк в таблице employees](61. Первое имя first_name для нечётных строк в таблице employees.md) | ![]() |
**Ответы полностью проверены на платформе NowCoder.Язык SQL — SQLite 3.7.9Решение задач в основном основано на форуме NowCoder.
Локальные тесты проводятся с использованием MySQL 5.7, некоторые синтаксические конструкции отличаются от SQLite. Для MySQL версий 5.7+, следует установить параметр sql_mode, чтобы правильно использовать группировки (решает проблему строгих условий запросов GROUP BY из-за ONLY_FULL_GROUP_BY, этот метод используется временно).
SET SQL_MODE = (SELECT REPLACE(@@SQL_MODE, 'ONLY_FULL_GROUP_BY', ''));
Дополнительно см.: Понимание и настройка sql_mode в MySQL
Данные на платформе NowCoder практически совпадают с данными для тестирования на MySQL, поэтому можно сначала протестировать локально, а затем отправить результат на NowCoder.
Перейти по адресу https://launchpad.net/test-db/employees-db-1/1.0.6 и скачать файл employees_db-full-1.0.6.tar.bz2
Распаковать скачанный файл
tar jxvf employees_db-full-1.0.6.tar.bz2
cd employees_db-full-1.0.6
Изменить файл employees.sql
# Замените строку 38 set default_storage_engine = InnoDB;
SET DEFAULT_STORAGE_ENGINE = INNODB;
# Замените строку 44 SELECT CONCAT('storage engine: ', @@DEFAULT_STORAGE_ENGINE) AS INFO;
SELECT CONCAT('storage engine: ', @@DEFAULT_STORAGE_ENGINE) AS INFO;
Импортировать базу данных
mysql -u root -p -t < employees.sql
Ссылки:
https://blog.csdn.net/appleyuchi/article/details/79439387
GitHub: https://github.com/datacharmer/test_db
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )