Каталог
Веб-разработка с нуля: четыре курса по порядку.
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Каталог
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Урок 22 из 52 · 8 мин
Несколько счётчиков в одном запросе и списки через запятую.
Хочу по каждому городу: всего покупателей, с телефоном и список имён через запятую.
FILTER посчитает только нужные строки внутри группы, а string_agg склеит имена.
FILTERcount(*) FILTER (WHERE условие) — агрегат считает только строки, где условие истинно. Особенность PostgreSQL.SELECT staff_id,
count(*) AS orders,
count(*) FILTER (WHERE status = 'cancelled') AS cancelled
FROM orders
GROUP BY staff_id
ORDER BY staff_id;count(DISTINCT customer_id) считает разные значения, без повторов.SELECT count(*) AS orders, count(DISTINCT customer_id) AS unique_guests
FROM orders;string_aggstring_agg(name, ', ') склеивает значения группы в одну строку через разделитель. Порядок можно задать: string_agg(name, ', ' ORDER BY name).SELECT city, string_agg(name, ', ' ORDER BY name) AS guests
FROM customers
GROUP BY city;Нужно несколько счётчиков с разными условиями — не делай несколько запросов, используй FILTER.
Для каждого города выведи city, число покупателей total и число покупателей с телефоном with_phone через FILTER.
FILTER — пока нетcategories — категории товаровid, nameproducts — товарыid, name, category_id, price, weight_g, is_available, added_oncustomers — покупателиid, name, email, city, phone, birthday, registered_onstaff — сотрудникиid, name, role, salary, hired_on, manager_idorders — заказыid, customer_id, staff_id, created_at, statusorder_items — позиции заказовorder_id, product_id, quantity, unit_pricereviews — отзывыid, customer_id, product_id, rating, comment, created_onВыберите один ответ.
Как посчитать, сколько разных покупателей делали заказы?
Введите короткий ответ без лишних пробелов.
Какая функция склеивает значения группы в одну строку через разделитель?
Проверяем состояние обучения…