|
|
|
Помогите понять работу SUM & JOIN
|
|||
|---|---|---|---|
|
#18+
Досталось мне в наследство большое количество аналитических запросов, которые нужно перевести на новую базу данных. Оно конечно можно и тупо попытаться переписать, но с детства люблю Товарища Сухова с его выражением: "Лучше, конечно, помучиться." Поясните пожалуйста почему этот запрос выдает одно, а когда убираю джоины совсем другое хотя запросы все к одной и той же таблице. Как джоины то работают c SUM? Могу привести списки статей про JOIN: http://kreker.org/items/5 http://www.anton-pribora.ru/articles/mysql/mysql-join ни одна из этих статей не объясняет мой вопрос. 1. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. результат1 CPMV 32265.02009959082 2 CPA 1.1980484753180737E7 3 CPMVbid 21676.31267523582 2. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. результат Row imp_pricing_type count_payout 1 CPMVbid 21097.13375782354 2 CPA 218307.45131600025 3 CPMV 34099.79351488262 3. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. результатRow imp_pricing_type count_payout 1 CPA 2.5315054309997848E8 2 CPMV 34098.059514882625 3 CPMVbid 21097.08847582354 Поясните, пожалуйста, почему такое разное поведение в каждом случае? Либо ткните в какую-нибудь хорошую документацию чтобы поясняло не просто как работает JOIN, а именно JOIN & SUM Заранее спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2014, 01:35:31 |
|
||
|
Помогите понять работу SUM & JOIN
|
|||
|---|---|---|---|
|
#18+
alexnews, хорошая задачка, первое впечатление что бред, потом что такого результата быть в принципе не может, потом всеже да может но логика долж-набыть конкретно задвинутая -- кому понадобился тройно полулевый самоумножение по необязательной колонке но с повторяюшимеся связочнум ключом...? Лучше скажите словами что надо и покажите маленький пример. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2014, 02:47:12 |
|
||
|
Помогите понять работу SUM & JOIN
|
|||
|---|---|---|---|
|
#18+
Интересно, зачем в первом запросе таблица с алиасом dec? она там нигде не используется. alexnewsчтобы поясняло не просто как работает JOIN, а именно JOIN & SUMа что там пояснять? джойн перемножает таблицы (все, а не попарно!), а сум() считает сумму выбранных полей или выражений. Сделайте 3 таблицы с 2 записями в каждой и покрутите на них джойны с суммами - всё станет ясно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2014, 05:14:58 |
|
||
|
Помогите понять работу SUM & JOIN
|
|||
|---|---|---|---|
|
#18+
tanglirИнтересно, зачем в первом запросе таблица с алиасом dec? она там нигде не используется. Используется, при условии что decision_id не уникален и содержит дублирующие значения. Это так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2014, 09:03:54 |
|
||
|
Помогите понять работу SUM & JOIN
|
|||
|---|---|---|---|
|
#18+
Anatoly BtanglirИнтересно, зачем в первом запросе таблица с алиасом dec? она там нигде не используется. Используется, при условии что decision_id не уникален и содержит дублирующие значения. Это так?это, мягко говоря, весьма оригинальный вариант использования я скорее поверю, что писавший сей запрос просто не понимал, что пишет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2014, 10:58:14 |
|
||
|
Помогите понять работу SUM & JOIN
|
|||
|---|---|---|---|
|
#18+
tanglirAnatoly Bпропущено... Используется, при условии что decision_id не уникален и содержит дублирующие значения. Это так?это, мягко говоря, весьма оригинальный вариант использования я скорее поверю, что писавший сей запрос просто не понимал, что пишет как по мне всё понятно...и вообщето логично. в теме до этого про обновление таблицы с -100 у одной записи и + 100 другой записи, подобный финт использовался в решении. есть таблица1, есть таблица2 надо сделать выборку из таблицы1, но только тех записей, для которых есть некое соответсвие в таблице2. делаем джоин и тем самым отфильтровываем не нужное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2014, 17:13:15 |
|
||
|
Помогите понять работу SUM & JOIN
|
|||
|---|---|---|---|
|
#18+
alex564657498765453, а если внимательно посмотреть? там одна и та же таблица джойнится, причём в первый раз каким-то марсианским оператором "join each", про который я даже нагуглить ничего не могу, а второй раз лефт джойном - навряд ли это "отсеивание лишних" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2014, 17:19:07 |
|
||
|
Помогите понять работу SUM & JOIN
|
|||
|---|---|---|---|
|
#18+
tangliralex564657498765453, а если внимательно посмотреть? там одна и та же таблица джойнится, причём в первый раз каким-то марсианским оператором "join each", про который я даже нагуглить ничего не могу, а второй раз лефт джойном - навряд ли это "отсеивание лишних" согласен , я прсомотрел, но и ты согласись - первый джоин работает как фильтр, а второй что уже лефт, что не лефт, уже както побую... ЗЫ я тоже большими глазами посмотрел на JOIN EACH зато на гуглил внимательней тебя :) когда таблицы большие, используеться join each (типо просто джоин строит таблицу пересечения, а модификатор ич для больших таблиц нужен, дабы указать что не строить сразу результат пересечения) и да это не мускл. это какоето гугл сольюшин ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2014, 17:32:07 |
|
||
|
Помогите понять работу SUM & JOIN
|
|||
|---|---|---|---|
|
#18+
tanglirAnatoly Bпропущено... Используется, при условии что decision_id не уникален и содержит дублирующие значения. Это так?это, мягко говоря, весьма оригинальный вариант использования я скорее поверю, что писавший сей запрос просто не понимал, что пишет После моего вопроса создателю сего деяния зачем нужен этот dec джоин он сослался на другой джоин где это было использовано, тем самым дав понять что не знает о чем идет речь. И это к сожалению только самый маленький пример чего они пишут, похоже не понимая половины написанного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2014, 18:43:31 |
|
||
|
Помогите понять работу SUM & JOIN
|
|||
|---|---|---|---|
|
#18+
alex564657498765453tangliralex564657498765453, а если внимательно посмотреть? там одна и та же таблица джойнится, причём в первый раз каким-то марсианским оператором "join each", про который я даже нагуглить ничего не могу, а второй раз лефт джойном - навряд ли это "отсеивание лишних" зато на гуглил внимательней тебя :) когда таблицы большие, используеться join each (типо просто джоин строит таблицу пересечения, а модификатор ич для больших таблиц нужен, дабы указать что не строить сразу результат пересечения) и да это не мускл. это какоето гугл сольюшин alex564657498765453, вы полностью правы это Гугл запросы для больших таблиц https://cloud.google.com/bigquery/query-reference, в каждой таблице примерно по 60-80 млн данный в день. Так как очень похоже на обычный sql запрос и я должен отвечать за mysql, то и решил задать вопрос тут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2014, 18:55:41 |
|
||
|
Помогите понять работу SUM & JOIN
|
|||
|---|---|---|---|
|
#18+
Стоп. Стоп-стоп-стоп. Оказывается, я в прошлый раз не до конца осознал маньячность этого запроса. Смотрим внимательно:alexnews Код: sql 1. 2. 3. таблица три раза джойнится сама с собой, причём по одному и тому же полю (т.е. это не связь "родитель-потомок" или что-то подобное). Ну ладно, может, первый джойн нужен для какого-то хитрого расчёта (заквадратить количество найденных строк в каждой группе - хз кому и зачем такое может понадобиться, ну да ладно). Но второй! Лефт джойн таблицы саму на себя по одному и тому же полю? Зачем тут лефт?! alex564657498765453зато на гуглил внимательней тебя :)прикол в том, что по запросу "join each" мне гугл выдавал всё, что угодно, в том числе и эту тему, но только не инфу о своих же технологиях :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2014, 06:08:05 |
|
||
|
Помогите понять работу SUM & JOIN
|
|||
|---|---|---|---|
|
#18+
tanglir, мдя... видать ТС зная логику таблицы, хуже мускл, но зная что должно получаться и видя ЭТО...этот запрос и его работу... не мудрено что он не мог понять как джоин работают... походу тут никто не понимает , как в даном случае задействован джоин.:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2014, 09:37:42 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38764196&tid=1834148]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 350ms |

| 0 / 0 |
