Sobes.tech
Junior

Analyse des ventes par catégories de produits dans un magasin de détail Vous travaillez en tant qu'analyste dans un magasin de détail. Votre tâche est de créer un rapport de ventes par catégories de produits avec les calculs suivants : • nombre total d'unités vendues dans la catégorie (total_units_sold); • chiffre d'affaires total par catégorie, en tenant compte des remises, où la remise est calculée comme unit_price × units_sold × (1 − discount/100). Si aucune remise (NULL), considérer 0%. Arrondir à deux décimales; • moyenne des unités vendues par vente (avg_units_per_sale), arrondie à deux décimales; • part des ventes sans remise (no_discount_share) — nombre de ventes avec NULL ou 0% de remise, divisé par le nombre total de ventes dans la catégorie, arrondi à trois décimales. Triez d'abord par revenu total (total_revenue) décroissant, puis par moyenne d'unités par vente (avg_units_per_sale) croissant, et enfin par nom de catégorie en ordre alphabétique. Format d'entrée Table sales: • sale_id (int) — identifiant unique de la vente • product_id (int) — identifiant du produit • category (text) — catégorie du produit • sale_date (timestamp) — date et heure de la vente • units_sold (int) — unités vendues • unit_price (numeric) — prix par unité • discount (numeric) — remise en pourcentage, peut être NULL La colonne discount peut contenir des valeurs nulles. Format de sortie La requête doit retourner une table avec les champs dans cet ordre : • category (text) — catégorie du produit • total_units_sold (int) — nombre total d'unités vendues dans la catégorie • total_revenue (numeric) — revenus totaux par catégorie, arrondis à deux décimales • avg_units_per_sale (numeric) — moyenne d'unités par vente, arrondie à deux décimales • no_discount_share (numeric) — part des ventes sans remise (valeur entre 0 et 1), arrondée à trois décimales Les résultats doivent être triés d'abord par total_revenue décroissant, puis par avg_units_per_sale croissant, et enfin par catégorie en ordre alphabétique.

sobes.tech IA

Réponse de l'IA

sql SÉLECTIONNER catégorie, SUM(units_vendus) COMME total_units_vendus, ARRONDIR(SUM(prix_unité * units_vendus * (1 - COALESCE(remise, 0) / 100.0)), 2) COMME revenu_total, ARRONDIR(MOYENNE(units_vendus), 2) COMME moyenne_units_par_vente, ARRONDIR( SUM(CASE WHEN remise EST NULL OU remise = 0 ALORS 1 AUTRE 0 FIN)::numérique / COUNT(*), 3 ) COMME part_sans_remise DE ventes GROUPE PAR catégorie ORDRE PAR revenu_total DESC, moyenne_units_par_vente ASC, catégorie ASC;