Sobes.tech
Junior

Rapport pour l'entreprise logistique Vous êtes analyste dans une entreprise logistique qui enregistre les opérations dans les entrepôts. Vous devez établir un rapport sur l'efficacité de chaque entrepôt. Pour chaque entrepôt, calculez : • le nombre total d'opérations (count_operations); • le nombre total de produits traités dans l'entrepôt (sum_quantity); • le temps moyen de traitement d'une opération (avg_processing_time), en ne considérant que les opérations avec un temps spécifié (non NULL), arrondi à l'entier le plus proche; • le nombre maximum et minimum de produits traités dans une seule opération (max_quantity, min_quantity); • le nombre d'opérations de chaque type (« livraison », « expédition », « transfert ») dans des colonnes séparées : supply_operations, shipment_operations, transfer_operations. Filtrez les entrepôts dont le nombre total d'opérations est supérieur à 2 et dont le temps moyen de traitement ne dépasse pas 60 minutes. Triez le résultat par ID d'entrepôt par ordre croissant. Format d'entrée Tableau operations: • operation_id (int) — identifiant unique de l'opération • warehouse_id (int) — identifiant de l'entrepôt • operation_type (text) — type d'opération : « livraison », « expédition », « transfert »

sobes.tech IA

Réponse de l'IA

Pour établir un rapport sur l'efficacité des entrepôts, vous pouvez utiliser la requête SQL suivante:

SELECT
    warehouse_id,
    COUNT(*) AS count_operations,
    SUM(quantity) AS sum_quantity,
    ROUND(AVG(CASE WHEN processing_time IS NOT NULL THEN processing_time END)) AS avg_processing_time,
    MAX(quantity) AS max_quantity,
    MIN(quantity) AS min_quantity,
    SUM(CASE WHEN operation_type = 'поставка' THEN 1 ELSE 0 END) AS supply_operations,
    SUM(CASE WHEN operation_type = 'отгрузка' THEN 1 ELSE 0 END) AS shipment_operations,
    SUM(CASE WHEN operation_type = 'перемещение' THEN 1 ELSE 0 END) AS transfer_operations
FROM operations
GROUP BY warehouse_id
HAVING COUNT(*) > 2 AND ROUND(AVG(CASE WHEN processing_time IS NOT NULL THEN processing_time END)) <= 60
ORDER BY warehouse_id ASC;

Ici :

  • quantity — quantité de produits dans l'opération;
  • processing_time — temps de traitement de l'opération (en minutes);
  • Des fonctions d'agrégation sont utilisées pour compter et calculer des statistiques;
  • Filtrage par nombre d'opérations et temps moyen de traitement;
  • Le résultat est trié par ID d'entrepôt.