169 похожих чатов

Всем привет, прошу не банить, пришел за советом =) Дали такую

задачку:
Необходимо написать программу, которая за один проход по таблице вычисляет:
MIN – минимальное время обработки заявки на этапе;
MAX – максимальное время обработки заявки на этапе;
AVG – среднее значение времени обработки заявки на этапе, из которого исключены минимальные и максимальные значения времени обработки (если таковое значение отсутствует, то вывести “NO”).
Вот мое решение (точнее как я его понял): https://pastebin.com/ccNMHzeZ
По ссылке там и тестовые данные и создание таблицы вместе с запросом.
У меня вопрос, я все неправильно написал? И что значит за один проход?

6 ответов

10 просмотров

я бы сделал рефакторинг, возможно с CTE, чтобы код на одном уровне запроса не дублировался (аналитика, количество секунд), и запрос был чище. логически на первый взгляд правильно (детально не вникал; не уверен насчет partition by stage_type_id - точно не by stage_id?) под однопроходностью в контексте задачи скорее всего понимается использование аналитических функций - за счет этого вы читаете таблицу один раз; я бы предположил, что именно умение пользоваться аналитикой и проверяется. альтернативным аналитике решением будет self-join, или подзапросы - там чтений одной и той же таблицы будет несколько.

Alex- Автор вопроса
Kirill Leontev
я бы сделал рефакторинг, возможно с CTE, чтобы код...

Ааа понял. Можете подсказать, возможно ли тут применение keep dance_rank? я просто пробовал ее как то прикуртить, т.к. задания на окнонки там уже было=)

Alex
Ааа понял. Можете подсказать, возможно ли тут прим...

как Кирилл написал тут скорее partition by ... over больше подходит

Alex- Автор вопроса
Egor 🐱😺 Solominov
как Кирилл написал тут скорее partition by ... ove...

Ок, понял 😅 А как понять фразу "Написать программу", ведь то что я написал это запрос. Ну добавлю я там инсер и заверну все по процедуру, это и будет программа ? 😂

Alex
Ааа понял. Можете подсказать, возможно ли тут прим...

нет (ну т.е. если не притягивать за уши). keep dense_rank полезен, например, при запросе "сопоставь общее среднее время обработки заявки сотрудником со средним временем обработки заявки им же за неделю до ухода в отпуск"

Kirill Leontev
нет (ну т.е. если не притягивать за уши). keep den...

(пример наверное не очень удачный, его можно проще без keep)

Похожие вопросы

Обсуждают сегодня

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Кто-нибудь знает почему SPM клонирует репо целиком? Некоторые репы просто огромные, как та же swift-syntax которая нужна для использования макросов. Сначала подумал, что это...
iMike
6
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
еще вопрос, допустим мы создадим char массив из 10 элементов и присвоим ему через сканф 10 символов. и выведем все символы. Хотел спросить последний элемент /0 будет включать...
Anthem
11
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
Где в Астане можно купить мясо для шашлыков?
Dancing Іңұқәһүғө
21
Карта сайта