Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
запрос
|
|||
|---|---|---|---|
|
#18+
Есть запрос такого вида: select value1, sum(value2) from table1 where value3 = 1 group by value1 И еще такой запрос: select value1, sum(value2) from table1 where value3 = 2 group by value1 можно ли объединить их в 1, в котором были бы 3 столбца? 1) первый столбец из первого запроса 2) второй столбец из первого запроса 3) второй столбец из второго запроса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2001, 13:35 |
|
||
|
запрос
|
|||
|---|---|---|---|
|
#18+
что-то в этом роде select a.value1, (select sum(value2) from table1 where value3 = 1 and value1=a.value1) as sum_value2_1, (select sum(value2) from table1 where value3 = 2 and value1=a.value1) as sum_value2_2 from table1 a ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2001, 14:01 |
|
||
|
запрос
|
|||
|---|---|---|---|
|
#18+
select value1, sum(case when value3=1 then value2 else 0 end), sum(case when value3=2 then value2 else 0 end) from table1 where value3 in(1, 2) group by value1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2001, 14:28 |
|
||
|
запрос
|
|||
|---|---|---|---|
|
#18+
Основой здесь является 1-ый запрос, к нему добавляется дополнительный столбец, а посему надо в условии where оставить value3 = 1 select value1, sum(case when value3=1 then value2 else 0 end), sum(case when value3=2 then value2 else 0 end) from table1 where value3 = 1 group by value1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2001, 06:55 |
|
||
|
запрос
|
|||
|---|---|---|---|
|
#18+
2zamm Как же у вас рассчитается 2-ая сумма, если вы накладываете ограничение на весь запрос where value3 = 1. В этом случае в выборке не будет ни одной записи , где value3 = 2 IMHO должно быть так, вообще без where, т.к. ограничение есть в самой функции SUM() select value1, sum(case when value3=1 then value2 else 0 end), sum(case when value3=2 then value2 else 0 end) from table1 group by value1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2001, 07:24 |
|
||
|
запрос
|
|||
|---|---|---|---|
|
#18+
>IMHO должно быть так, вообще без where, т.к. ограничение есть в самой функции SUM() В общем то да, но Ваш первый вариант лучше, т. к. ограничивает набор выбранных данных, а во втором примере сервер будет перебирать всю таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2001, 08:07 |
|
||
|
запрос
|
|||
|---|---|---|---|
|
#18+
2Glory: Грешен, лажанулся, поспешил. Но смысл моего замечания был в том, что за основу должен браться 1-ый запрос, где value3=1. Но теперь, трезво рассудив, ясно осознал, что такого в принципе быть не может. В качестве реабилитации предлагаю использоват union select value1 as val, sum(value2) as sum from table1 where value3 = 1 group by value1 union select value1 as val, sum(value2) as sum from table1 where value3 = 2 group by value1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2001, 11:15 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3559&tid=1826081]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 240ms |
| total: | 380ms |

| 0 / 0 |
