Сводная функция добавляет больше строк, чем ожидалось

Я не мог придумать лучшего названия, если кто-то может придумать лучшее, я готов внести предложения.

У меня есть таблица, которая выглядит так:

Source    TableName     Detail     active_status     RowCount
a          table_one     stuff      active               500
b          table_two     stuff_2    active               750
c          table_three   stuff_3    inactive            1000
d          table_four    stuff_4    active               200
e          table_five    stuff_5    inactive             200

Когда я запускаю этот запрос:

select [a], [b], [c], [d], [e]
from (select [source], [rowcount] from ParentStaged) as src_tbl
pivot
(
    avg([rowcount])
    for source in ([a], [b], [c], [d], [e])
) as pivot_tbl;

Получаю такой результат:

  a       b        c      d       e
500     750     1000    200     200

Когда я запускаю этот запрос:

select [a], [b], [c], [d], [e]
from (select [source], [TableName], [rowcount] from ParentStaged) as src_tbl
pivot
(
    avg([rowcount])
    for source in ([a], [b], [c], [d], [e])
) as pivot_tbl;

Я получаю такой результат:

   a        b        c       d       e
 500     null     null    null    null
null      750     null    null    null
null     null     1000    null    null
null     null     null     200    null
null     null     null    null     200

Почему это?

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
35
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Думаю, я понял почему.

Это не имеет ничего общего с количеством столбцов, которые я добавляю в предложение from, это связано с тем, что я добавляю именно.

Агрегирование выполняет вычисление на основе того, что я говорю ему агрегировать по перечисленным в моем предложении from. Группировка выполняется на основе того, что я не использую в агрегации.

Если я перечисляю столбцы, которые не являются общими для других групп, это вызывает появление нулевых значений.

Если я перечислю общие столбцы, нулевые значения не появятся.

Верный. Во втором запросе PIVOT автоматически группирует записи по TableName только потому, что он там есть.

Wolfgang Kais 09.09.2018 23:47

Другие вопросы по теме