SQLize
Online
/
PHPize Online
/
SQLtest Online
A
A
A
Share
Donate
Blog
Popular
Donate
A
A
A
Share
Blog
Popular
SQLize.online is a free online SQL environment for quickly running, experimenting with and sharing code.
You can run your SQL code on top of the most popular RDBMS including MySQL, MariaDB, SQLite, PostgreSQL, Oracle and Microsoft SQL Server.
SQL code:
Upload
Copy
Format
Clear
/* Сохранить пример CREATE TABLE employees ( employee_id INT, salary NUMERIC, department_id INT ); INSERT INTO employees (employee_id, salary, department_id) SELECT id, 40000 + (random() * 60000)::INT, -- Случайная зарплата от 40,000 до 100,000 101 + (random() * 5)::INT -- Случайный department_id от 101 до 105 FROM generate_series(1, 50) AS id; -- Генерация 50 строк SELECT e.employee_id, e.salary, e.department_id FROM employees e WHERE e.salary > (SELECT AVG(salary) FROM employees WHERE department_id = e.department_id); */ /* У тебя есть таблица employees: CREATE TABLE employees ( employee_id INT, salary NUMERIC, department_id INT ); INSERT INTO employees (employee_id, salary, department_id) VALUES (1, 50000, 101), (2, 60000, 102), (3, 72000, 101), (4, 70000, 103), (5, 65000, 102), (6, 48000, 103), (7, 72000, 101), (8, 53000, 104), (9, 62000, 105), (10, 58000, 101); Нужно написать запрос, который для каждого отдела (department_id) выведет: employee_id, salary, Ранг сотрудника по зарплате внутри отдела (используй оконную функцию RANK()). WITH EmployeesSalaryRank as ( SELECT employee_id, department_id, salary, RANK() OVER (PARTITION BY department_id ORDER BY salary DESC) as salary_rank FROM employees ) SELECT employee_id, salary, department_id, salary_rank FROM EmployeesSalaryRank ORDER BY department_id, salary_rank; */ /* Описание задачи: Используя ту же таблицу employees, напиши запрос, который выведет: employee_id, salary, Скользящее среднее зарплаты за последние 3 сотрудника (используй оконную функцию AVG() с ROWS BETWEEN). CREATE TABLE employees ( employee_id INT, salary NUMERIC, department_id INT ); INSERT INTO employees (employee_id, salary, department_id) VALUES (1, 50000, 101), (2, 60000, 102), (3, 55000, 101), (4, 70000, 103), (5, 65000, 102), (6, 48000, 103), (7, 72000, 101), (8, 53000, 104), (9, 62000, 105), (10, 58000, 101); WITH EmployeesSalaryAVG as ( SELECT department_id, employee_id, salary, AVG(salary) OVER ( PARTITION BY department_id ORDER BY employee_id ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING ) as salary_move_avg FROM employees ) SELECT department_id, employee_id, salary, salary_move_avg FROM EmployeesSalaryAVG ORDER BY department_id, employee_id; */ /* Задание 3: Поиск сотрудников с максимальной зарплатой в каждом отделе Описание задачи: Используя таблицу employees, напиши запрос, который выведет: department_id, employee_id, salary, Признак того, что зарплата сотрудника является максимальной в его отделе (используй оконную функцию MAX() и CTE). Ожидаемый результат: department_id employee_id salary is_max_salary 101 7 72000 true 102 5 65000 true 103 4 70000 true 104 8 53000 true 105 9 62000 true CREATE TABLE employees ( employee_id INT, salary NUMERIC, department_id INT ); INSERT INTO employees (employee_id, salary, department_id) VALUES (1, 50000, 101), (2, 60000, 102), (3, 55000, 101), (4, 70000, 103), (5, 65000, 102), (6, 48000, 103), (7, 72000, 101), (8, 53000, 104), (9, 62000, 105), (10, 58000, 101), (11, 72000, 101); WITH EmployeesSalaryMAX as ( SELECT department_id, employee_id, salary, MAX(salary) OVER ( PARTITION BY department_id ) as salary_max FROM employees ) SELECT department_id, employee_id, salary, (salary = salary_max) as salary_is_max FROM EmployeesSalaryMAX WHERE salary = salary_max ORDER BY department_id, employee_id; */ /* Задание 4: Разница между зарплатой сотрудника и средней зарплатой в отделе Описание задачи: Используя таблицу employees, напиши запрос, который выведет: employee_id, salary, Разницу между зарплатой сотрудника и средней зарплатой в его отделе (используй оконную функцию AVG() и CTE). Ожидаемый результат: employee_id salary salary_diff 1 50000 -8750.0 2 60000 -2500.0 3 55000 -3750.0 4 70000 11000.0 5 65000 2500.0 6 48000 -11000.0 7 72000 13250.0 8 53000 0.0 9 62000 0.0 10 58000 -750.0 */ CREATE TABLE employees ( employee_id INT, salary NUMERIC, department_id INT ); INSERT INTO employees (employee_id, salary, department_id) VALUES (1, 50000, 101), (2, 60000, 102), (3, 55000, 101), (4, 70000, 103), (5, 65000, 102), (6, 48000, 103), (7, 72000, 101), (8, 53000, 104), (9, 62000, 105), (10, 58000, 101), (11, 72000, 101); WITH EmployeesSalaryAVG as ( SELECT department_id, employee_id, salary, AVG(salary) OVER ( PARTITION BY department_id ) as salary_avg FROM employees ) SELECT department_id, employee_id, salary, ROUND(salary - salary_avg, 0) as salary_dif FROM EmployeesSalaryAVG ORDER BY department_id, employee_id;
SQL
Server:
MariaDB 11.4
MariaDB 11.5
MariaDB 10
MariaDB 10 Sakila (ReadOnly)
MySQL 8.0
MySQL 8.0 Sakila (ReadOnly)
SQLite 3
SQLite 3 Preloaded
PostgreSQL 10 Bookings (ReadOnly)
PostgreSQL 13
PostgreSQL 14
PostgreSQL 15
PostgreSQL 16
PostgreSQL 17
MS SQL Server 2017
MS SQL Server 2019
MS SQL Server 2022
MS SQL Server 2022 AdventureWorks (ReadOnly)
Firebird 4.0
Firebird 4.0 (Employee)
Oracle Database 19c (HR)
Oracle Database 21c
Oracle Database 23c Free
SOQOL
Version
ER Diagram
Preserve result
Stuck with a problem?
Got Error?
Ask ChatGPT!
Result:
Copy
Clear