![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
asdfghjkl |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 9.9.2009 Репутация: нет Всего: нет |
![]() Необходимо выбрать из т.2.1.1. id, moment (первый), status, если status неизменен и >0, причем надо дополнительно посчитать длительность этого промежутка времени в минутах и вывести в столбец duration. Думаю, что-то вроде вложенного запроса (может ошибаюсь), внешний выбирает, внутренний проверяет статус, подсчет длительности: (конечный момент- начальный момент)*60. Но как прописать добавку нового столбца, хотя бы набросок? Какой тип запроса использовать? |
|||
|
||||
Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 24 Всего: 54 |
Так в чём конкретно проблема? Что именно не получается?
-------------------- Слава Україні! |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Gluttton, она сама ни хрена не знает.
http://forum.sources.ru/index.php?showtopi...t&p=2361774 Это сообщение отредактировал(а) Akina - 10.9.2009, 08:50 -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
asdfghjkl |
|
||||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 9.9.2009 Репутация: нет Всего: нет |
Грубость здесь не уместна, не хочешь помочь не надо, может не все такие снобы как ты. если внимательно посмотришь суть запроса изложена. Добавлено через 4 минуты и 14 секунд
не получается организовать проверку на статус, я так понимаю, что должен проходить по строкам пока татус не изменился, но надо запоминать момент. и еще не сталкивалась с добавлением в выходные данные нового столбца. Написано возможно использование сложного, коррелированного или вложеного запроса, думаю коррелированный запрос не подходит, а вот насчет сложного или вложеного не знаю. Добавлено через 11 минут и 6 секунд сейчас читала про сложные запросы, написано, что если необходимо во вложенных запросах использовать одну и ту же таблицу, то запрос должен быть коррелированным. |
||||
|
|||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Думаю в задании ошибка. На каком основании посчитано duration = 120 для id =2 moment=14:00 - не ясно
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
asdfghjkl |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 9.9.2009 Репутация: нет Всего: нет |
СПАСИБО ОГРОМНОЕ. А можно немного пояснений начиная с 16 строки, плиз? Думаю в последней строки опечатка, а может для проверки специально так задумано.
|
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
asdfghjkl, Этот запрос АФАИК сможет отработать только на Оракле. Возможно на PG. Какая у вас целевая платформа?
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
asdfghjkl |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 9.9.2009 Репутация: нет Всего: нет |
Это задание, вроде как организация использует Oracle, но я сама работала только с MySQL. возможно как-то переписать? я вот начала разбирать, но не все понятно.
|
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Как раз над этим сейчас и думаю. Если Gluttton меня опередит, будет ой как досадно ![]() -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
asdfghjkl |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 9.9.2009 Репутация: нет Всего: нет |
Что происходит в:
20 select 21 s.* 22 , sum(start_of_group) over (partition by id order by moment) grp_id 23 from ( 24 select s.* 25 , decode(status,lag(status) over (partition by id order by moment),0,1) start_of_group 26 from s order by moment 27 )s 28 )s ? |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Пока - нет. Если запрос на приведённых исходных данных даёт приведённый выход, это не значит, что логика получения ответа соответствует истинной. И на другом наборе входных данных может получиться хрень. Именно этого ты никак не можешь понять. Иными словами, модель чёрного ящика всегда приближённая. Это сообщение отредактировал(а) Akina - 10.9.2009, 10:18 -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Строка 25 сравнивает статус со следующей по моменту в разрезе id строчкой, в случае если совпадает, выставляет 0, иначе 1. Получается еденичка проставляется для первого статуса в группе подрядидущих.
Строка 22 считает накапливающую сумму по посчитанному в строке 25 значению в разрезе id в пореядке возрастания момента. Получается расчитывается какбы уникальный идентификатор группы подрядидущих. -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
asdfghjkl |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 9.9.2009 Репутация: нет Всего: нет |
А это одинаково для оракл и MySQL? откуда grp_id, я поняла, что это идентификатор повторяющих групп, почему он не указан в 25 строке? А для чего эта сумма? |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Я же сказал. Это только для оракл. Может быть Постгри так же умеет. Потому что на основании значения, полученного в 25й, он расчитывается Думайте можете взорвать себе еще мозг моделью.. это вот точно ТОЛЬКО для оракла, прчем начиная только с 10й версии работает по тому же принципу
Добавлено через 6 минут asdfghjkl, А может ну его? Если вы поакажете решение на собеседовании, но затруднитесь повторить на практике в оффисе, врядли вы пройдете испытательный срок. Может куда попроще попробовать сунутсья, где требования чуть мене высокие? Это сообщение отредактировал(а) Zloxa - 10.9.2009, 10:39 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
asdfghjkl |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 9.9.2009 Репутация: нет Всего: нет |
Не злитесь, просто мне это объяснять и я волнуюсь, это не просто задание нудного препода. Может я совсем безнадежна, но сдаваться не хочется.
Насчет grp_id, я всегда думала, что если что-то вычисляется, то должно указываться куда это все поместить. А сумма- это количество групп, или количество записей в группе? Вроде должно быть записей, но если считается по grp_id... |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |