← Усі задачіSQL · Junior

Кількість і сума за статусами

Порахуйте замовлення за статусами: колонки status, orders (кількість) і revenue (сума total).

Спершу статуси з найбільшою кількістю замовлень, за рівної кількості - за назвою статусу.

Таблиці

CREATE TABLE orders (
  id          int PRIMARY KEY,
  customer_id int NOT NULL,
  status      text NOT NULL,
  total       numeric(10, 2) NOT NULL
);

Тести (3)

Кожен тест заповнює таблиці своїми даними й порівнює результат вашого запиту з очікуваним: ті самі колонки (назви й порядок) і ті самі рядки в тому самому порядку, тож ORDER BY важливий. Запит виконується в справжньому PostgreSQL просто в браузері; перший запуск завантажує його (близько 5 МБ).

  1. INSERT INTO orders VALUES
      (1, 10, 'paid', 100.00),
      (2, 11, 'paid', 50.50),
      (3, 10, 'cancelled', 20.00),
      (4, 12, 'paid', 10.00),
      (5, 13, 'pending', 75.00);
  2. -- equal counts: sorted by status
    INSERT INTO orders VALUES
      (1, 1, 'shipped', 10.00),
      (2, 2, 'paid', 20.00),
      (3, 3, 'shipped', 30.00),
      (4, 4, 'paid', 40.00);
  3. -- no orders at all
    SELECT 1;