Я немного недоумеваю, почему мой результат этого утверждения показывает null в Project_ID. Я взглянул на нижнюю запись и попробовал inner join
, но результат был тщетным, так же как и с left join
. У меня есть только два разных Project_ID. По какой-то нечетной причине Name
снова заявляется с Count
, добавленным из предыдущих списков. Почему он это делает и как я могу это исправить? Пожалуйста, предоставьте свой совет.Почему синтаксис SQL не указан?
Why does my SQL query return rows with NULL? It should never return rows with NULL
select dp."Name",count(dp."Name") Count,max(to_char(ft."Hours",'9,999')) "Maximum Hours Worked",
max(ft."Salary"::money) "Maximum Salary",
ft."Project_ID"
from facttable ft
left join alldatainput dp on dp."alldatainputpk" = ft."alldatainputfk"
group by rollup(dp."Name",ft."Project_ID")
Результат:
Name Count Maximum Hours Worked Maximum Salary Project_ID
Hulk Hogan 157 3,500 $432,995.00 LFC
Hulk Hogan 43 3,499 $550,000.00 PCR
Hulk Hogan 200 3,500 $550,000.00 (null)
Andre the Giant 42 5,300 $870,000.00 PCR
Andre the Giant 42 5,300 $870,000.00 (null)
Bret Hart 5 3,675 $512,000.00 LFC
Bret Hart 10 4,193 $716,510.00 PCR
Bret Hart 15 4,193 $716,510.00 (null)
Winnie the Pooh 561 5,600 $929,654.00 PCR
Winnie the Pooh 561 5,600 $929,654.00 (null)
1000 5,600 $929,654.00 (null)
Это от 'rollup' - Это ваши применения агрегатов по каждой группировке' name' и 'Project_Id' как резюме. Таким образом, вы получаете полную учетную запись 'count' и' max' для группы из отработанных часов и зарплаты. Окончательная запись - это сводка всего набора. – Siyual
Если я удалю 'rollup', это не даст мне общее для каждого столбца. Каков наиболее жизнеспособный способ добавить общее количество ко всем столбцам для этого утверждения? –
К сожалению, я не знаю достаточно о синтаксисе postgres, чтобы ответить, как отфильтровать подгруппы. – Siyual