Sobes.tech
Junior

Raport dla firmy logistycznej Jesteś analitykiem w firmie logistycznej, która prowadzi rejestr operacji w magazynach. Musisz przygotować raport dotyczący efektywności każdego magazynu. Dla każdego magazynu oblicz: • łączną liczbę operacji (count_operations); • łączną liczbę przetworzonych towarów w magazynie (sum_quantity); • średni czas przetwarzania operacji (avg_processing_time), uwzględniając tylko operacje z określonym czasem (nie NULL), zaokrąglony do najbliższej liczby całkowitej; • maksymalną i minimalną liczbę towarów przetworzonych w jednej operacji (max_quantity, min_quantity); • liczbę operacji każdego typu («dostawa», «wysyłka», «przemieszczanie») w osobnych kolumnach: supply_operations, shipment_operations, transfer_operations. Przefiltruj magazyny, dla których łączna liczba operacji jest większa niż 2, a średni czas przetwarzania nie przekracza 60 minut. Posortuj wynik według ID magazynu rosnąco. Format wejścia Tabela operations: • operation_id (int) — unikalny identyfikator operacji • warehouse_id (int) — identyfikator magazynu • operation_type (text) — typ operacji: «dostawa», «wysyłka», «przemieszczanie»

sobes.tech AI

Odpowiedź od AI

Aby sporządzić raport o wydajności magazynów, można użyć następującego zapytania SQL:

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;

Tutaj:

  • quantity — ilość towarów w operacji;
  • processing_time — czas przetwarzania operacji (w minutach);
  • Używane są funkcje agregujące do liczenia i obliczania statystyk;
  • Filtracja po liczbie operacji i średnim czasie przetwarzania;
  • Wynik jest posortowany według ID magazynu.