Sobes.tech
Junior

Analisi delle vendite per categorie di prodotti in un negozio al dettaglio Sei un analista in un negozio al dettaglio. Il tuo compito è creare un rapporto di vendita per categorie con i seguenti calcoli: • quantità totale di unità vendute nella categoria (total_units_sold); • ricavo totale per categoria, considerando gli sconti, dove lo sconto si calcola come unit_price × units_sold × (1 − discount/100). Se lo sconto è assente (NULL), si considera 0%. Arrotondare a due decimali; • media delle unità vendute per vendita (avg_units_per_sale), arrotondata a due decimali; • quota di vendite senza sconto (no_discount_share) — numero di vendite con NULL o 0% di sconto, diviso per il totale delle vendite nella categoria, arrotondato a tre decimali. Ordina prima i risultati per ricavo totale (total_revenue) in ordine decrescente, poi per media delle unità per vendita (avg_units_per_sale) in ordine crescente, e infine per nome della categoria in ordine alfabetico. Formato di input Tabella sales: • sale_id (int) — identificativo unico di vendita • product_id (int) — identificativo del prodotto • category (text) — categoria del prodotto • sale_date (timestamp) — data e ora di vendita • units_sold (int) — unità vendute • unit_price (numeric) — prezzo per unità • discount (numeric) — sconto in percentuale, può essere NULL La colonna discount può contenere valori nulli. Formato di output La query deve restituire una tabella con i campi in questo ordine: • category (text) — categoria del prodotto • total_units_sold (int) — quantità totale di unità vendute in questa categoria • total_revenue (numeric) — ricavo totale per categoria, arrotondato a due decimali • avg_units_per_sale (numeric) — media delle unità per vendita, arrotondata a due decimali • no_discount_share (numeric) — quota di vendite senza sconto (valore tra 0 e 1), arrotondata a tre decimali Il risultato deve essere ordinato prima per total_revenue in ordine decrescente, poi per avg_units_per_sale in ordine crescente, e infine per nome della categoria in ordine alfabetico.

sobes.tech AI

Risposta dell'AI

sql SELECT category, SUM(units_sold) AS total_units_sold, ROUND(SUM(unit_price * units_sold * (1 - COALESCE(discount, 0) / 100.0)), 2) AS total_revenue, ROUND(AVG(units_sold), 2) AS avg_units_per_sale, ROUND( SUM(CASE WHEN discount IS NULL OR discount = 0 THEN 1 ELSE 0 END)::numeric / COUNT(*), 3 ) AS no_discount_share FROM sales GROUP BY category ORDER BY total_revenue DESC, avg_units_per_sale ASC, category ASC;