DEV Community

Erlan Akbaraliev
Erlan Akbaraliev

Posted on

База данных Практика

Создайте таблицу:

CREATE TABLE сотр ( id_сотр INT PRIMARY KEY, имя VARCHAR(50) NOT NULL, долж VARCHAR(50) NOT NULL, id_руков INT, дата_при DATE, зарп NUMERIC(10,2), комис NUMERIC(10,2), id_отдел INT ); 
Enter fullscreen mode Exit fullscreen mode

Добавьте данные к этому таблицу:

INSERT INTO сотр (id_сотр, имя, долж, id_руков, дата_при, зарп, комис, id_отдел) VALUES (7369, 'СМИТ', 'СОТРУДНИК', 7902, '1980-12-17', 800, NULL, 20), (7499, 'АЛЛЕН', 'ПРОДАЖНИК', 7698, '1981-02-20', 1600, 300, 30), (7521, 'УОРД', 'ПРОДАЖНИК', 7698, '1981-02-22', 1250, 500, 30), (7566, 'ДЖОНС', 'РУКОВОДИТЕЛЬ', 7839, '1981-04-02', 2975, NULL, 20), (7654, 'МАРТИН', 'ПРОДАЖНИК', 7698, '1981-09-28', 1250, 1400, 30), (7698, 'БЛЕЙК', 'РУКОВОДИТЕЛЬ', 7839, '1981-05-01', 4250, NULL, 30), (7782, 'КЛАРК', 'РУКОВОДИТЕЛЬ', 7839, '1981-06-09', 2450, 200, 10), (7788, 'СКОТТ', 'АНАЛИТИК', 7566, '1982-12-09', 3000, NULL, 20), (7839, 'КИНГ', 'ДИРЕКТОР', NULL, '1981-11-17', 5000, NULL, 10), (7844, 'ТЁРНЕР', 'ПРОДАЖНИК', 7698, '1981-09-08', 1500, 10, 30), (7876, 'АДАМС', 'СОТРУДНИК', 7788, '1983-01-12', 1100, NULL, 20), (7900, 'ДЖЕЙМС', 'СОТРУДНИК', 7698, '1981-12-03', 950, NULL, 30), (7902, 'ФОРД', 'АНАЛИТИК', 7566, '1981-12-03', 3000, 700, 20), (7934, 'МИЛЛЕР', 'СОТРУДНИК', 7782, '1982-01-23', 1300, 600, 10), (8001, 'КУК', 'РУКОВОДИТЕЛЬ', 7839, '1981-06-09', 3800, NULL, 50), (8002, 'ХАРТ', 'ПРОДАЖНИК', 8001, '1982-05-09', 1600, 200, 50), (8003, 'ВУЛФ', 'СОТРУДНИК', 8001, '1983-04-09', 1000, NULL, 50); 
Enter fullscreen mode Exit fullscreen mode

Выведите все данные из таблицы сотр (сотрудники):

SELECT * FROM сотр; 
Enter fullscreen mode Exit fullscreen mode

Эта таблица хранит данные про сотрудников которые рабают в одной компании.

Имя таблицы: сотр (сотрудники)
id_сотр: id номер сотрудника
имя: имя сотрудника
долж: должность сотрудника
id_руков: id номер

руководителя этого сотрудника
дата_при: дата приема, когда этот сотрудник начал работать в этой компании
зарп: зарплата этого сотрудника в долларах
комис: сколько комиссий этот сотрудник получает от каждой прибыли
id_отдел: id номер отдела где сотрудник работает

Задачи 1 (WHERE, <>=, AND, OR, NULL, DISTINCT, BETWEEN, ORDER BY, DESC, ASC)

1. Выведите сотрудников, у которых зарплата больше 2800 (WHERE, >) 2. Выведите сотрудников, работающих в отделе 10 или 20 (WHERE, OR) 3. Выведите сотрудников, у которых комиссия больше 600 (WHERE, >) 4. Выведите сотрудников, у которых комиссия меньше 600 (WHERE, >) 5. Выведите сотрудников, у которых комиссия неизвестна (IS NULL) 6. Выведите должности (долж) сотрудников (с повторениями / без повторений) (DISTINCT) 7. Выведите сотрудников, у которых нет руководителя (id_руков) (IS NULL) 8. Выведите сотрудников, у которых зарплата между 2000 и 3000 (BETWEEN, AND) 9. Выведите имя и зарплату сотрудников, отсортировав по зарплате (ORDER BY) 10. Выведите имя и зарплату сотрудников, отсортировав по зарплате по убыванию 
Enter fullscreen mode Exit fullscreen mode

Задачи 2 (SQL функции, MAX, MIN, AVG, COUNT, SUM, AS)

1. Выведите максимальную зарплату (MAX) 2. Выведите минимальную зарплату (MIN) 3. Выведите сумму всех зарплат и назовите результат "Сумма зарплат" (SUM, AS) 4. Выведите сумму всех зарплат отдела 20 (SUM, WHERE) 5. Выведите среднюю зарплату отдела 20 (AVG, WHERE) 6. Выведите среднюю зарплату отдела 20 и округлите (AVG, ROUND, WHERE) 7. Выведите среднюю зарплату, сумму всех зарплат отдела 20 (AVG, SUM, WHERE) 8. Сколько сотрудников у нас имеются в таблице? (COUNT) 9. Сколько должностей есть в таблице сотрудников? (COUNT, DISTINCT) 10. Выведите количество сотрудников, у которых зарплата больше 2000 
Enter fullscreen mode Exit fullscreen mode

Ответы

Задача 1

1. Выведите сотрудников, у которых зарплата больше 2800 (WHERE, >) SELECT * FROM сотр WHERE зарп > 2800; 2. Выведите сотрудников, работающих в отделе 10 или 20 (WHERE, OR) SELECT * FROM сотр WHERE id_отдел=10 OR id_отдел=20; 3. Выведите сотрудников, у которых комиссия больше 600 (WHERE, >) SELECT * FROM сотр WHERE комис>600; 4. Выведите сотрудников, у которых комиссия меньше 600 (WHERE, >) SELECT * FROM сотр WHERE комис<600; 5. Выведите сотрудников, у которых комиссия неизвестна (IS NULL) SELECT * FROM сотр WHERE комис IS NULL; 6. Выведите должности (долж) сотрудников (с повторениями / без повторений) (DISTINCT) SELECT DISTINCT долж FROM сотр; 7. Выведите сотрудников, у которых нет руководителя (id_руков) (IS NULL) SELECT * FROM сотр WHERE id_руков IS NULL; 8. Выведите сотрудников, у которых зарплата между 2000 и 3000 (BETWEEN, AND) SELECT * FROM сотр WHERE зарп BETWEEN 2000 AND 3000; SELECT * FROM сотр WHERE зарп>=2000 AND зарп<=3000; 9. Выведите имя и зарплату сотрудников, отсортировав по зарплате (ORDER BY) SELECT имя, зарп FROM сотр ORDER BY зарп; 10. Выведите имя и зарплату сотрудников, отсортировав по зарплате по убыванию SELECT имя, зарп FROM сотр ORDER BY зарп DESC; 
Enter fullscreen mode Exit fullscreen mode

Задача 2

1. Выведите максимальную зарплату (MAX) SELECT MAX(зарп) FROM сотр; 2. Выведите минимальную зарплату (MIN) SELECT MIN(зарп) FROM сотр; 3. Выведите сумму всех зарплат и назовите результат "Сумма зарплат" (SUM, AS) SELECT SUM(зарп) AS "Сумма зарплат" FROM сотр; 4. Выведите сумму всех зарплат отдела 20 (SUM, WHERE) SELECT SUM(зарп) AS "Сумма зарплат отдела 20" FROM сотр WHERE id_отдел=20; 5. Выведите среднюю зарплату отдела 20 (AVG, WHERE) SELECT AVG(зарп) AS "Средняя зарплат" FROM сотр; 6. Выведите среднюю зарплату отдела 20 и округлите (AVG, ROUND, WHERE) SELECT ROUND(AVG(зарп)) AS "Средняя зарплат" FROM сотр; 7. Выведите среднюю зарплату, сумму всех зарплат отдела 20 (AVG, SUM, WHERE) SELECT ROUND(AVG(зарп)), SUM(зарп) FROM сотр WHERE id_отдел=20; 8. Сколько сотрудников у нас имеются в таблице? (COUNT) SELECT COUNT(*) FROM сотр; 9. Сколько должностей есть в таблице сотрудников? (COUNT, DISTINCT) SELECT COUNT(DISTINCT долж) FROM сотр; SELECT DISTINCT долж FROM сотр; SELECT долж FROM сотр; 10. Выведите количество сотрудников, у которых зарплата больше 2000 SELECT COUNT(*) FROM сотр WHERE зарп > 2000; 
Enter fullscreen mode Exit fullscreen mode

Top comments (0)