CodeGym /Kursy /SQL SELF /Tworzenie podstawowych raportów

Tworzenie podstawowych raportów

SQL SELF
Poziom 59, Lekcja 2
Dostępny

Zanim pogubisz się w składni SQL i zmiennych, pamiętaj: funkcje agregujące to twoi najlepsi kumple przy liczeniu wszystkiego, co się da. Pomagają wyliczać sumy, średnie i robić całą magię na dużej liczbie wierszy.

Funkcje agregujące używa się do wykonywania operacji matematycznych na grupach wierszy. Najważniejsze z nich to:

  • SUM(): liczy sumę wartości.
  • AVG(): wylicza średnią wartość.
  • COUNT(): liczy liczbę wierszy w wyniku.

Funkcje agregujące są przydatne, gdy pracujesz z dużą ilością danych i chcesz dostać szybki raport: ile masz zamówień, jaka jest ich łączna wartość, albo jaki był największy rachunek dzisiaj. Zobaczmy kilka funkcji agregujących.

Liczenie wierszy: funkcja COUNT()

Funkcja COUNT() pozwala policzyć liczbę wierszy w tabeli. Przeanalizujmy jej działanie na przykładach.

-- Proste liczenie wszystkich wierszy w tabeli zamówień
SELECT COUNT(*) AS total_orders
FROM orders;

-- Liczenie unikalnych klientów
SELECT COUNT(DISTINCT customer_id) AS unique_customers
FROM orders;

-- Liczenie zamówień, gdzie suma jest większa niż 100
SELECT COUNT(*) AS high_value_orders
FROM orders
WHERE total_amount > 100;

Funkcja COUNT() jest często używana do liczenia rekordów, unikalnych wartości, a także w połączeniu z filtrowaniem, na przykład "ilu studentów zapisało się na kursy z Python".

Sumowanie danych: funkcja SUM()

Funkcja SUM() liczy sumę wartości w kolumnie. Policzmy teraz sumę wszystkich zakupów klientów.

-- Liczenie całkowitego przychodu
SELECT SUM(total_amount) AS total_revenue
FROM orders;

-- Suma zakupów konkretnego klienta
SELECT SUM(total_amount) AS customer_spending
FROM orders
WHERE customer_id = 101;

-- Suma zamówień według kategorii
SELECT category, SUM(total_amount) AS category_revenue
FROM orders
GROUP BY category;

SUM() to główne narzędzie do analizy sprzedaży, przychodów i wszelkich innych sum. Na przykład, chcesz znać dochody centrum biznesowego za ostatni miesiąc? Prościzna.

Średnie wartości: funkcja AVG()

Funkcja AVG() pomaga wyliczyć średnią wartość z danych. Na przykład, średnia ocena studentów albo średni rachunek klienta.

-- Średnia wartość zamówienia
SELECT AVG(total_amount) AS average_order_value
FROM orders;

-- Średnia wartość zamówień według kategorii
SELECT category, AVG(total_amount) AS average_order_value
FROM orders
GROUP BY category;

-- Średni rachunek klientów z ostatnich 7 dni
SELECT AVG(total_amount) AS avg_check_last_week
FROM orders
WHERE order_date >= NOW() - INTERVAL '7 days';

Średnia wartość jest przydatna do analizy jakości obsługi, wykrywania anomalii i liczenia kluczowych metryk, jak średni zysk na klienta.

Użycie funkcji agregujących w analizie

Teraz, gdy znamy podstawowe funkcje, zobaczmy jak użyć ich do tworzenia podstawowych raportów analitycznych.

Przykład 1: całkowity przychód i liczba zamówień

Załóżmy, że chcesz wiedzieć, ile zamówień złożono i jaki był całkowity przychód w danym miesiącu.

SELECT
    COUNT(*) AS total_orders,
    SUM(total_amount) AS total_revenue
FROM orders
WHERE order_date >= '2023-10-01' AND order_date <= '2023-10-31';

Przykład 2: średni przychód według kategorii

A co jeśli chcemy rozbić przychód według kategorii produktów?

SELECT
    category,
    COUNT(*) AS total_orders,
    SUM(total_amount) AS total_revenue,
    AVG(total_amount) AS avg_order_value
FROM orders
GROUP BY category;

Przykład 3: zamówienia z ostatnich 7 dni

Często trzeba analizować metryki z krótkich okresów, na przykład z ostatniego tygodnia.

SELECT
    COUNT(*) AS orders_last_week,
    SUM(total_amount) AS revenue_last_week,
    AVG(total_amount) AS avg_check_last_week
FROM orders
WHERE order_date >= NOW() - INTERVAL '7 days';

Praktyczne case'y z konkretnymi zadaniami

Zadanie: Analiza sprzedaży według regionów

Załóżmy, że jesteś właścicielem sieci sklepów i chcesz analizować, jak rozkłada się przychód według regionów.

SELECT
    region,
    COUNT(*) AS total_orders,
    SUM(total_amount) AS total_revenue,
    AVG(total_amount) AS average_order_value
FROM orders
GROUP BY region
ORDER BY total_revenue DESC;

Zadanie: Top-10 klientów według przychodu

Dodajmy trochę logiki, żeby wyłonić top-10 klientów według sumy zamówień.

SELECT
    customer_id,
    SUM(total_amount) AS total_spending
FROM orders
GROUP BY customer_id
ORDER BY total_spending DESC
LIMIT 10;

Zadanie: Porównanie przychodu według dni tygodnia

Chcesz wiedzieć, w które dni tygodnia twój biznes zarabia najwięcej? Oto przykład:

SELECT
    TO_CHAR(order_date, 'Day') AS day_of_week,
    SUM(total_amount) AS total_revenue,
    AVG(total_amount) AS avg_order_value
FROM orders
GROUP BY TO_CHAR(order_date, 'Day')
ORDER BY total_revenue DESC;
2
Zadanie
SQL SELF, poziom 59, lekcja 2
Niedostępne
Analiza średnich przychodów z ostatnich 30 dni
Analiza średnich przychodów z ostatnich 30 dni
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION