← Wszystkie zadaniaSQL · Junior

Liczba i suma według statusu

Policz zamówienia według statusu: kolumny status, orders (liczba) i revenue (suma total).

Najpierw statusy z największą liczbą zamówień, a przy równej liczbie według nazwy statusu.

Tabele

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

Testy (3)

Każdy test wypełnia tabele własnymi danymi i porównuje wynik twojego zapytania z oczekiwanym: te same kolumny (nazwy i kolejność) i te same wiersze w tej samej kolejności, więc ORDER BY ma znaczenie. Zapytanie działa w prawdziwym PostgreSQL prosto w przeglądarce; pierwsze uruchomienie go pobiera (około 5 MB).

  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;