Sobes.tech
Junior

Доклад за логистична компания Вие сте анализатор в логистична компания, която води отчет за операциите в складовете. Трябва да изготвите доклад за ефективността на всеки склад. За всеки склад изчислете: • общия брой операции (count_operations); • общия брой обработени стоки в склада (sum_quantity); • средното време за обработка на операция (avg_processing_time), като се вземат предвид само операциите с указаното време (не NULL), закръглено до най-близкото цяло число; • максималното и минималното количество стоки, обработени в една операция (max_quantity, min_quantity); • броя на операциите от всеки тип («доставка», «изпращане», «прехвърляне») в отделни колони: supply_operations, shipment_operations, transfer_operations. Филтрирайте складовете, при които общият брой операции е повече от 2 и средното време за обработка не надвишава 60 минути. Подредете резултата по ID на склада във възходящ ред. Формат на входа Таблица operations: • operation_id (int) — уникален идентификатор на операцията • warehouse_id (int) — идентификатор на склада • operation_type (text) — тип операция: «доставка», «изпращане», «прехвърляне»

sobes.tech AI

Отговор от AI

За да създадете отчет за ефективността на складовете, можете да използвате следния 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;

Тук:

  • quantity — количеството стоки в операцията;
  • processing_time — време за обработка на операцията (в минути);
  • Използват се агрегатни функции за броене и изчисляване на статистики;
  • Филтриране по брой операции и средно време за обработка;
  • Резултатът е сортиран по ID на склада.