Sobes.tech
Junior

Aruanne logistikafirmale Olete logistikafirma analüütik, kes jälgib laoseadete operatsioonide arvestust. Teil on vaja koostada aruannet iga laosea tõhususe kohta. Iga laosea kohta arvutage: • koguarv operatsioone (count_operations); • laoseal töödeldud kaupade koguarv (sum_quantity); • keskmine operatsiooni töötlemisaeg (avg_processing_time), arvestades ainult neid operatsioone, millel on määratud aeg (mitte NULL), ümardatuna täisarvuks; • maksimaalne ja minimaalne kaupade arv, töödeldud ühes operatsioonis (max_quantity, min_quantity); • iga tüüpi operatsioonide arv («tarne», «saadetis», «liikumine») eraldi veergudes: supply_operations, shipment_operations, transfer_operations. Filtreerige laosead, mille koguarv operatsioone on suurem kui 2 ja keskmine töötlemisaeg ei ületa 60 minutit. Sorteerige tulemust laosea ID järgi kasvavas järjekorras. Sisendvorming Operatsioonide tabel: • operation_id (int) — operatsiooni unikaalne identifikaator • warehouse_id (int) — laosea identifikaator • operation_type (text) — operatsiooni tüüp: «tarne», «saadetis», «liikumine» • quantity (int) — kaupade arv operatsioonis • operation_date (timestamp) — operatsiooni kuupäev ja kellaaeg • processing_time (int) — operatsiooni töötlemisaeg Veerg processing_time võib sisaldada tühje väärtusi. Väljundi formaat Küsimus peaks tagastama tabeli järgmiste väljadega järjekorras: • warehouse_id (int) — laosea unikaalne identifikaator • count_operations (int) — laoseal tehtud operatsioonide koguarv • sum_quantity (int) — laoseal töödeldud kaupade koguarv • avg_processing_time (numeric) — operatsiooni keskmine töötlemisaeg (minutites), arvestades ainult mitte-NULL väärtusi, ümardatuna täisarvuks • max_quantity (int) — ühe operatsiooni jooksul töödeldud suurim kaupade arv • min_quantity (int) — ühe operatsiooni jooksul töödeldud väikseim kaupade arv • supply_operations (int) — «tarne» operatsioonide arv • shipment_operations (int) — «saadetis» operatsioonide arv • transfer_operations (int) — «liikumine» operatsioonide arv

sobes.tech AI

Vastus AI-lt

sql SELECT warehouse_id, COUNT() AS count_operations, SUM(quantity) AS sum_quantity, ROUND(AVG(processing_time)) 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 WHERE warehouse_id IS NOT NULL GROUP BY warehouse_id HAVING COUNT() > 2 AND (AVG(processing_time) <= 60 OR AVG(processing_time) IS NULL) ORDER BY warehouse_id ASC;


**Пояснения:**
- `COUNT(*)` считает все операции на складе.
- `SUM(quantity)` суммирует количество товаров.
- `AVG(processing_time)` считает среднее время обработки, игнорируя NULL.
- `ROUND` округляет среднее время до целого.
- `MAX` и `MIN` находят максимальное и минимальное количество товаров в одной операции.
- `SUM(CASE WHEN ...)` считает количество операций каждого типа.
- Фильтрация по количеству операций и среднему времени обработки в `HAVING`.
- Сортировка по `warehouse_id` по возрастанию.

Обратите внимание, что `AVG(processing_time)` автоматически игнорирует NULL значения, поэтому не нужно дополнительной фильтрации.