3 недели назад
🖥 Cовет по SQL-тестам: тестируйте не только результат запроса, а его инварианты
Обычно SQL проверяют так: SELECT * FROM orders WHERE status = 'paid'; И потом сравнивают: «вернулись нужные строки или нет». Но в реальных системах чаще ломается не сам happy path, а скрытые свойства данных. Например, для отчёта по заказам тест должен проверять не только конкретные строки, а правила: -- сумма по пользователям должна совпадать с общей суммой WITH by_user AS ( SELECT user_id, SUM(amount) AS total FROM orders WHERE status = 'paid' GROUP BY user_id ), overall AS ( SELECT SUM(amount)...
SQL Formatter: почему форматирование кода важнее, чем кажется | SQL Lab
Теги: SQL, Code Style, PostgreSQL, Инструменты разработчика, Best Practices Возьмём два запроса. Оба делают одно и то же. Найдите ошибку в первом: select u.id,u.name,count(o.id) as orders,sum(o.amount) as total from users u left join orders o on o.user_id=u.id where u.created_at>='2024-01-01' and u.is_active=true group by u.id,u.name having count(o.id)>0 order by total desc limit 50 А теперь во втором: SELECT u.id, u.name, COUNT(o.id) AS orders, SUM(o.amount) AS total FROM users u LEFT JOIN orders o ON o...
5 месяцев назад
4 задачек по SQL
Условие: В таблице users есть столбец email. Найдите все email-адреса, которые встречаются более одного раза, и укажите, сколько раз каждый из них встречается. Решение: SELECT email, COUNT(*) AS cnt FROM users GROUP BY email HAVING COUNT(*) > 1 ORDER BY cnt DESC; Объяснение: Условие: В таблице sales есть столбцы employee_id и amount. Получите топ-3 продавца по сумме продаж (amount), не используя LIMIT. Решение (через подзапрос): SELECT s1.employee_id, s1.amount FROM sales s1 WHERE ( SELECT COUNT(*) FROM sales s2 WHERE s2...
3 недели назад
Что такое база данных и SQL
База данных — это место, где хранится информация в структурированном виде. Она похожа на таблицу Excel: есть строки (записи) и столбцы (поля). Но база данных обычно находится на сервере, и к ней можно обращаться из разных программ. SQL (Structured Query Language) — язык, на котором мы пишем запросы к базе данных. С помощью запроса можно: Для работы с SQL нужна СУБД (система управления базами данных). Самые популярные: MySQL, PostgreSQL, SQLite. Везде SQL почти одинаковый. Самый частый запрос — получить данные из таблицы...