Hi! Could we please enable some services and cookies to improve your experience and our website?

SQLize | PHPize | SQLtest

Online Sandbox for SQL and PHP: Write, Run, Test, and Share SQL Queries and PHP Code

A A A
Login    Share code      Blog   FAQ
Copy Format Clear
-- Задание 1: Таблица сотрудников (employees) DROP TABLE IF EXISTS employees; CREATE TABLE employees ( id INTEGER PRIMARY KEY, name TEXT, salary DECIMAL(10, 2), bonus DECIMAL(10, 2) ); INSERT INTO employees (id, name, salary, bonus) VALUES (1, 'Alice', 50000, NULL), (2, 'Bob', 60000, 5000), (3, 'Charlie', 55000, NULL), (4, 'David', 70000, 7000), (5, 'Eve', 65000, 3000); -- 1. Кто имеет NULL в bonus SELECT id, name, salary, bonus, CASE WHEN bonus IS NULL THEN 'No Bonus' ELSE 'Has Bonus' END AS bonus_status FROM employees; -- 2. Замена NULL на 0 SELECT id, name, salary, COALESCE(bonus, 0) AS bonus FROM employees; -- Задание 2: Таблица товаров (products) DROP TABLE IF EXISTS products; CREATE TABLE products ( product_id INTEGER PRIMARY KEY, name TEXT, price DECIMAL(10,2) ); INSERT INTO products (product_id, name, price) VALUES (1, 'Product A', 10.00), (2, 'Product B', NULL), (3, 'Product C', 20.00), (4, 'Product D', NULL); -- 1. Только с ценой SELECT * FROM products WHERE price IS NOT NULL; -- 2. Без цены SELECT * FROM products WHERE price IS NULL; -- 3. Обновить NULL цен на среднюю цену UPDATE products SET price = (SELECT AVG(price) FROM products WHERE price IS NOT NULL) WHERE price IS NULL; -- Задание 3: Таблица клиентов (customers) DROP TABLE IF EXISTS customers; CREATE TABLE customers ( customer_id INTEGER PRIMARY KEY, name TEXT, email TEXT ); INSERT INTO customers (customer_id, name, email) VALUES (1, 'Ivan', 'ivan@example.com'), (2, 'Maria', NULL), (3, 'Petr', 'petr@example.com'), (4, 'Olga', NULL), (5, 'Dmitry', 'ivan@example.com'); -- 1. У кого нет email SELECT customer_id, name, email, CASE WHEN email IS NULL THEN 'No Email' ELSE 'Has Email' END AS email_status FROM customers; -- 2. Повторяющиеся email (включая NULL как отдельную группу) SELECT email, COUNT(*) AS count FROM customers GROUP BY email HAVING COUNT(*) > 1; -- 3. Почему email = NULL не работает? -- Потому что NULL — неизвестное значение. Нужно использовать IS NULL вместо = NULL -- Задание 4: Таблица продаж (sales) DROP TABLE IF EXISTS sales; CREATE TABLE sales ( sale_id INTEGER PRIMARY KEY, customer_id INTEGER, amount DECIMAL(10,2) ); INSERT INTO sales (sale_id, customer_id, amount) VALUES (1, 1, 100.00), (2, 2, NULL), (3, 3, 150.00), (4, 4, 200.00), (5, 1, NULL); -- 1. Сумма продаж (NULL игнорируются) SELECT SUM(amount) AS total_sales FROM sales; -- 2. Средняя сумма (NULL игнорируются) SELECT AVG(amount) AS average_sales FROM sales; -- 3. Сумма с заменой NULL на 0 SELECT SUM(COALESCE(amount, 0)) AS total_with_nulls_as_zero FROM sales; -- Задание 5: Таблица заказов (orders) DROP TABLE IF EXISTS orders; CREATE TABLE orders ( order_id INTEGER PRIMARY KEY, customer_id INTEGER, delivery_date TEXT ); INSERT INTO orders (order_id, customer_id, delivery_date) VALUES (1, 1, NULL), (2, 2, '2024-05-10'), (3, 3, NULL), (4, 4, '2024-05-12'); -- 1. Заказы без даты доставки SELECT * FROM orders WHERE delivery_date IS NULL; -- 2. Обновить NULL на текущую дату (эмулируем, т.к. SQLite не поддерживает CURRENT_DATE в UPDATE) UPDATE orders SET delivery_date = DATE('now') WHERE delivery_date IS NULL; -- 3. Объяснение: -- Сравнение delivery_date = '2024-05-10' не сработает для NULL, -- потому что NULL нельзя сравнивать через =. Используй IS NULL / IS NOT NULL.

Stuck with a problem? Got Error? Ask AI support!

Copy Clear