Sobes.tech
Junior

Analiza sprzedaży według kategorii produktów w sklepie detalicznym Pracujesz jako analityk w sklepie detalicznym. Twoim zadaniem jest przygotowanie raportu sprzedaży według kategorii z następującymi obliczeniami: • łączna liczba sprzedanych jednostek w kategorii (total_units_sold); • łączny przychód według kategorii, uwzględniając rabaty, gdzie rabat oblicza się jako unit_price × units_sold × (1 − discount/100). Jeśli rabat jest NULL, przyjmujemy 0%. Zaokrąglić do dwóch miejsc po przecinku; • średnia liczba sprzedanych jednostek na jedną sprzedaż (avg_units_per_sale), zaokrąglona do dwóch miejsc po przecinku; • udział sprzedaży bez rabatu (no_discount_share) — liczba sprzedaży z NULL lub 0% rabatem, podzielona przez łączną liczbę sprzedaży w kategorii, zaokrąglona do trzech miejsc po przecinku. Posortuj najpierw według łącznych przychodów (total_revenue) malejąco, potem według średniej liczby jednostek na sprzedaż (avg_units_per_sale) rosnąco, a na końcu według nazwy kategorii alfabetycznie. Format wejścia Tabela sales: • sale_id (int) — unikalny identyfikator sprzedaży • product_id (int) — identyfikator produktu • category (text) — kategoria produktu • sale_date (timestamp) — data i czas sprzedaży • units_sold (int) — sprzedane jednostki • unit_price (numeric) — cena za jednostkę • discount (numeric) — rabat w procentach, może być NULL Kolumna discount może zawierać wartości NULL. Format wyjścia Zapytanie powinno zwrócić tabelę z polami w takiej kolejności: • category (text) — kategoria produktu • total_units_sold (int) — łączna liczba sprzedanych jednostek w danej kategorii • total_revenue (numeric) — łączny przychód w kategorii, zaokrąglony do dwóch miejsc po przecinku • avg_units_per_sale (numeric) — średnia liczba jednostek na sprzedaż, zaokrąglona do dwóch miejsc po przecinku • no_discount_share (numeric) — udział sprzedaży bez rabatu (wartość od 0 do 1), zaokrąglony do trzech miejsc po przecinku Wynik powinien być posortowany najpierw według total_revenue malejąco, potem według avg_units_per_sale rosnąco, a na końcu według nazwy kategorii alfabetycznie.

sobes.tech AI

Odpowiedź od AI

sql WYBIERZ kategoria, SUM(liczba_sprzedanych_jednostek) JAKO łączna_liczba_sprzedanych_jednostek, ZAOKRĄGLIJ(SUM(cena_jednostkowa * liczba_sprzedanych_jednostek * (1 - COALESCE(rabat, 0) / 100.0)), 2) JAKO łączny_przychód, ZAOKRĄGLIJ(AVG(liczba_sprzedanych_jednostek), 2) JAKO średnia_jednostek_na_sprzedaż, ZAOKRĄGLIJ( SUM(CASE WHEN rabat IS NULL OR rabat = 0 THEN 1 ELSE 0 END)::numeric / COUNT(*), 3 ) JAKO udział_bez_rabatu Z sprzedaży GRUPUJ WEDŁUG kategoria SORTUJ WEDŁUG łączny_przychód DESC, średnia_jednostek_na_sprzedaż ASC, kategoria ASC;