Junior
Analýza prodeje podle kategorií zboží v maloobchodě Pracujete jako analytik v maloobchodě. Vaším úkolem je sestavit zprávu o prodeji podle kategorií s následujícími výpočty: • celkový počet prodaných jednotek v kategorii (total_units_sold); • celkové tržby podle kategorie, s ohledem na slevy, kde sleva se počítá jako unit_price × units_sold × (1 − discount/100). Pokud je sleva NULL, považuje se za 0 %. Zaokrouhlete na dvě desetinná místa; • průměrný počet prodaných jednotek na jednu prodej (avg_units_per_sale), zaokrouhlený na dvě desetinná místa; • podíl prodejů bez slevy (no_discount_share) — počet prodejů s NULL nebo 0% slevou dělený celkovým počtem prodejů v kategorii, zaokrouhlený na tři desetinná místa. Seřaďte nejdříve podle celkových tržeb (total_revenue) sestupně, poté podle průměru jednotek na prodej (avg_units_per_sale) vzestupně, a nakonec podle názvu kategorie abecedně. Formát vstupu Tabulka sales: • sale_id (int) — unikátní identifikátor prodeje • product_id (int) — identifikátor produktu • category (text) — kategorie produktu • sale_date (timestamp) — datum a čas prodeje • units_sold (int) — prodané jednotky • unit_price (numeric) — cena za jednotku • discount (numeric) — sleva v procentech, může být NULL Sloupec discount může obsahovat chybějící hodnoty. Formát výstupu Dotaz by měl vrátit tabulku se sloupci ve stejné pořadí: • category (text) — kategorie produktu • total_units_sold (int) — celkový počet prodaných jednotek v této kategorii • total_revenue (numeric) — celkové tržby podle kategorie, zaokrouhlené na dvě desetinná místa • avg_units_per_sale (numeric) — průměrný počet jednotek na prodej, zaokrouhlený na dvě desetinná místa • no_discount_share (numeric) — podíl prodejů bez slevy (hodnota mezi 0 a 1), zaokrouhlený na tři desetinná místa Výsledek by měl být seřazen nejdříve podle total_revenue sestupně, poté podle avg_units_per_sale vzestupně, a nakonec podle názvu kategorie abecedně.
sobes.tech AI
Odpověď od AI
sql VYBERTE kategorie, SUM(prodaných_jednotek) JAKO celkový_prodaných_jednotek, ROUND(SUM(cena_jednotky * prodaných_jednotek * (1 - COALESCE(zľava, 0) / 100.0)), 2) JAKO celkový_príjem, ROUND(AVG(prodaných_jednotek), 2) JAKO priemerné_jednotky_na_predaj, ROUND( SUM(CASE WHEN zľava JE NULL ALEBO zľava = 0 TAK 1 INAK 0 KONIEC) ::numeric / COUNT(*), 3 ) JAKO podiel_bez_zľavy Z predajov SKUPINA PODĽA kategorie ZORADIŤ PODĽA celkový_príjem DESC, priemerné_jednotky_na_predaj ASC, kategorie ASC;