Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Корреляционный запрос.  [new]
t-mac2014
Member

Откуда:
Сообщений: 6
Доброго вечера, форумчане.
При изучении sql столкнулся с вопросом. Про помощи пояснением, почему так, а не иначе.

Есть таблица agentshr, в которой указывается ид_сотрудника, его зп, команда, в коллектив которой он входит и тд.
Есть таблица agents, в которой собственно фио, ид_сотрудника и тд.

Я сделал запрос, используя корреляцию. Условие: вывести сотрудников, зарплата которых больше средней зп среди всех команд.
Вот листинг:

select firstname || ' ' || lastname as name, basesalary, 
(select trunc(avg(basesalary)) from agentshr) as "avg salary",
team from agentshr outer
inner join agents using (agentid)
where basesalary > (select avg(basesalary) from agentshr inner where outer.team = inner.team)
order by 2

Кажется, что всё логично, но мне неясно почему такой результат:
NAME BASESALARY avg salary TEAM
Elizabeth Dahlen 2985 3133 13
Christine Williams 3380 3133 11
Clair Robinson 3413 3133 13
Bruce Voss 3493 3133 13
Cornelis Dann 3520 3133 14
Tim Schutz 3630 3133 11

Почему вывелась зп, которая меньше средней зп?

Заранее спасибо.
30 янв 14, 22:23    [15497364]     Ответить | Цитировать Сообщить модератору
 Re: Корреляционный запрос.  [new]
t-mac2014
Member

Откуда:
Сообщений: 6
Мда... У кого что болит, тот о том и говорит.
Уважаемый гость, просьба писать по теме, не заниматься олигофренией. О членах думай про себя, тихо сам с собой.

В where есть ограничение, чтобы выводить зп, которая больше средней зп. Почему отобразилось одно значение, которое меньше средней, мне не ясно.
Поэтому и прошу пояснения от адекватных форумчан. Переработка запроса не нужна. Просто хотелось бы понять.
31 янв 14, 08:08    [15498139]     Ответить | Цитировать Сообщить модератору
 Re: Корреляционный запрос.  [new]
Elic
Member

Откуда:
Сообщений: 29980
t-mac2014
Просто хотелось бы понять.
Тебе образно объяснили отсутствие логики в твоём запросе. Но ты не хочешь осознавать правды.
31 янв 14, 08:25    [15498158]     Ответить | Цитировать Сообщить модератору
 Re: Корреляционный запрос.  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18484
Нужна
Как минимум, чтоб понять, какое "среднее" считается подзапросе основного запроса, а какое в подзапросе условия
31 янв 14, 08:28    [15498161]     Ответить | Цитировать Сообщить модератору
 Re: Корреляционный запрос.  [new]
t-mac2014
Member

Откуда:
Сообщений: 6
Вячеслав Любомудров
Нужна
Как минимум, чтоб понять, какое "среднее" считается подзапросе основного запроса, а какое в подзапросе условия


Вот я это и хочу понять =)
Я думал, что в селекте
(select trunc(avg(basesalary)) from agentshr)
и в условии
(select avg(basesalary) from agentshr inner where outer.team = inner.team)
это фактически одно и тоже...

Elic
t-mac2014
Просто хотелось бы понять.
Тебе образно объяснили отсутствие логики в твоём запросе. Но ты не хочешь осознавать правды.

В том то и дело, что прошу объяснить, почему так, возможно, я неверно понимаю работу корреляционного запроса.
31 янв 14, 08:49    [15498198]     Ответить | Цитировать Сообщить модератору
 Re: Корреляционный запрос.  [new]
Elic
Member

Откуда:
Сообщений: 29980
t-mac2014
В том то и дело, что прошу объяснить, почему так, возможно, я неверно понимаю работу корреляционного запроса.
Тебе объяснили. Но ты за формой не хочешь видеть сути.
И, да, толика мозга таки нужна.
31 янв 14, 09:03    [15498234]     Ответить | Цитировать Сообщить модератору
 Re: Корреляционный запрос.  [new]
t-mac2014
Member

Откуда:
Сообщений: 6
Elic
t-mac2014
В том то и дело, что прошу объяснить, почему так, возможно, я неверно понимаю работу корреляционного запроса.
Тебе объяснили. Но ты за формой не хочешь видеть сути.
И, да, толика мозга таки нужна.

Омг, мне не объяснили ничего или фразы: "Твой запрос гавно, в нем нет логики и тд" является для тебя объяснением? Клёво.

Какая-то логика в данном запросе присутствует, поскольку это пример из букваря по ораклу.
Поэтому попросил объяснить, как это работает.

P.S.: не удивляюсь, почему неким юзером ты уже был назван "быдлом". Очередной раз ты это подтверждаешь.
31 янв 14, 09:12    [15498268]     Ответить | Цитировать Сообщить модератору
 Re: Корреляционный запрос.  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18484
t-mac2014
Я думал, что в селекте
(select trunc(avg(basesalary)) from agentshr)
и в условии
(select avg(basesalary) from agentshr inner where outer.team = inner.team)
это фактически одно и тоже...
Свою голову приложить не пробовал?
Или тут кто-то должен тебе до самых основ разжевывать?
Хотя, если сразу не видишь, то, возможно, это уже неизлечимо
А вот других пообсуждать -- это да, мозгов хватило
31 янв 14, 09:18    [15498292]     Ответить | Цитировать Сообщить модератору
 Re: Корреляционный запрос.  [new]
rockclimber
Member

Откуда: у меня в голове опилки?
Сообщений: 11085
t-mac2014
Омг, мне не объяснили ничего или фразы: "Твой запрос гавно, в нем нет логики и тд" является для тебя объяснением? Клёво.
Ты учишься в институте благородных девиц и от слова "член" падаешь в обморок? А что ты будешь делать, если вдруг твоим начальником на работе окажется какой-нибудь полковник в отставке?

Найди принципиальную разницу между
чей-то член длиннее среднего по общежитию, но короче, чем по всей африке
и
чья-то зарплата больше среднего по команде, но меньше, чем по всем командам
31 янв 14, 09:20    [15498305]     Ответить | Цитировать Сообщить модератору
 Re: Корреляционный запрос.  [new]
t-mac2014
Member

Откуда:
Сообщений: 6
Вячеслав Любомудров
t-mac2014
Я думал, что в селекте
(select trunc(avg(basesalary)) from agentshr)
и в условии
(select avg(basesalary) from agentshr inner where outer.team = inner.team)
это фактически одно и тоже...
Свою голову приложить не пробовал?
Или тут кто-то должен тебе до самых основ разжевывать?
Хотя, если сразу не видишь, то, возможно, это уже неизлечимо
А вот других пообсуждать -- это да, мозгов хватило


Пробовал. Если бы с этим вопросом разобрался, за помощью форума не обращался бы.

Неизлечима звёздная болезнь в твоей голове, остальное поправимо.
Хамство кругом, хотя что удивляться, это же интернет. Кругом клавиатурные воины.

Тему можно закрывать.
31 янв 14, 09:26    [15498332]     Ответить | Цитировать Сообщить модератору
 Re: Корреляционный запрос.  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34630
t-mac2014,
Перевожу члены в дело ...


Твой запрос:
select firstname || ' ' || lastname as name, basesalary, 
(select trunc(avg(basesalary)) from agentshr) as "avg salary",
team from agentshr outer
inner join agents using (agentid)
where basesalary > (select avg(basesalary) from agentshr inner where outer.team = inner.team)
order by 2



Этот подзапрос

(select trunc(avg(basesalary)) from agentshr) as "avg salary"



выдаёт среднюю зарплату по ВСЕМ agentshr в твоей таблице.
Это -- средняя длина члена ПО ВСЕЙ АФРИКЕ.

А этот
where basesalary > (select avg(basesalary) from agentshr inner where outer.team = inner.team)


выдаёт среднюю зарплату ТОЛЬКО ПО ДАННОЙ КОМАНДЕ, team.
Это -- средняя длина члена в общежитии.
31 янв 14, 09:33    [15498358]     Ответить | Цитировать Сообщить модератору
 Re: Корреляционный запрос.  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34630
В общем, тебе надо использовать в обоих этих случаях корелированный подзапрос, а ты в одном из случаев используешь некореллированный.
31 янв 14, 09:34    [15498363]     Ответить | Цитировать Сообщить модератору
 Re: Корреляционный запрос.  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34630
t-mac2014
Пробовал. Если бы с этим вопросом разобрался, за помощью форума не обращался бы.

Неизлечима звёздная болезнь в твоей голове, остальное поправимо.
Хамство кругом, хотя что удивляться, это же интернет. Кругом клавиатурные воины.

Тему можно закрывать.


Это интернет, малыш, тут тебе никто ничего не должен.
Если ты это не поймёшь, тебе трудно будет.
К тому же учти, что порой луди пишут что-то только из желания оригинально выразить свои мысли,
главное, чтобы мысли были.
Зато в интернете один пошлёт, другой поможет. И всё бесплатно...
31 янв 14, 09:40    [15498378]     Ответить | Цитировать Сообщить модератору
 Re: Корреляционный запрос.  [new]
t-mac2014
Member

Откуда:
Сообщений: 6
MasterZiv
t-mac2014,
Перевожу члены в дело ...


Твой запрос:
select firstname || ' ' || lastname as name, basesalary, 
(select trunc(avg(basesalary)) from agentshr) as "avg salary",
team from agentshr outer
inner join agents using (agentid)
where basesalary > (select avg(basesalary) from agentshr inner where outer.team = inner.team)
order by 2



Этот подзапрос

(select trunc(avg(basesalary)) from agentshr) as "avg salary"



выдаёт среднюю зарплату по ВСЕМ agentshr в твоей таблице.
Это -- средняя длина члена ПО ВСЕЙ АФРИКЕ.

А этот
where basesalary > (select avg(basesalary) from agentshr inner where outer.team = inner.team)


выдаёт среднюю зарплату ТОЛЬКО ПО ДАННОЙ КОМАНДЕ, team.
Это -- средняя длина члена в общежитии.


Спасибо, добрый форумчанин =)

MasterZiv
Это интернет, малыш, тут тебе никто ничего не должен.
Если ты это не поймёшь, тебе трудно будет.
К тому же учти, что порой луди пишут что-то только из желания оригинально выразить свои мысли,
главное, чтобы мысли были.
Зато в интернете один пошлёт, другой поможет. И всё бесплатно...


Это я понял и знал уже давно, просто очередной раз в этом убедился...

Еще раз Большое человеческое спасибо. Ошибку понял.
31 янв 14, 10:00    [15498479]     Ответить | Цитировать Сообщить модератору
 Re: Корреляционный запрос.  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34630
t-mac2014
Это я понял и знал уже давно, просто очередной раз в этом убедился...


а чё тогда выступал? думать надо было, а не выступать.
мне кстати аналогия с членами понравилась...
31 янв 14, 11:13    [15498984]     Ответить | Цитировать Сообщить модератору
 Re: Корреляционный запрос.  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18484
Модераторы опять отличились?

Такое ощущение, что они включаются по некому рандомному генератору, и сообщения/юзеров под раздачу выбирают по такому же принципу

Ведь совершенно неоскорбительное, зато полностью наглядное и с юморком сообщение удаляется
А, извините, самовлюбленный идиот, который его не понял, оскорбился и стал поливать грязью остальных -- это да, это нормально

Нихрена не могу понять логику
1 фев 14, 05:42    [15503874]     Ответить | Цитировать Сообщить модератору
 Re: Корреляционный запрос.  [new]
Elic
Member

Откуда:
Сообщений: 29980
Вячеслав Любомудров
Нихрена не могу понять логику
Я с тобой согласен. Моё первое сообщение теперь выглядит неадекватным. И не только оно.
Забей. Они влачат существование не ради логики. Козлы - они и в Африке козлы. Даже если козёл среди них всего лишь один.
Или поставь на вид случай самодурства в ОНС. С тем же успехом :)
1 фев 14, 09:11    [15503957]     Ответить | Цитировать Сообщить модератору
 Re: Корреляционный запрос.  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18484
Да просто удивляет
Ведь умные, в большинстве своем вменяемые люди
Да и не боятся высказать свою точку зрения
Вот так взять, удалить сообщение, когда тема подутихла, безо всякого обоснования, в конце концов...
ЗАЧЕМ? КОМУ ОНО МЕШАЛО?

Или модераторский колпак производит какое-то дополнительное давление на мозги?
А ты еще рвался в модераторы... Опомнись, пожалей себя :-)
1 фев 14, 09:24    [15503960]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить