Ваш запрос выбирает без агрегирования столбцов:
p.sp_id, p.sp_fname, p.sp_lname, sp.sp_invoice
, но ваш GROUP BY
находится в столбцах
p.sp_id, p.sp_fname, p.sp_lname, p.sp_sup
Последний в этих списках отличается.
Я ожидал получить все записи о продажах для sales_purchases, где у продавца в sales_persons нет выделенного sp_sup (supervisor), что означало бы, что они сами являются наблюдателями.Когда я запускаю запрос, я просто получаю «не выбранные строки» в качестве ответа, когда у меня должно быть десять результатов
AND sp_sup IN ( SELECT sp_sup FROM sales_persons p WHERE sp_sup IS NULL )
Собирается исключить все строки, так как вложенный выбор всегда будет возвращатьсяNULL
значений.
Почему бы просто не использовать:
SELECT p.sp_id,
p.sp_fname,
p.sp_lname,
sp.sp_invoice,
'$' || to_char (MAX (sp_saleprice), 'FM999999999.99') "Max",
'$' || to_char (MIN (sp_saleprice), 'FM999999999.99') "Min",
'$' || to_char (SUM (sp_saleprice), 'FM999999999.99') "Total",
'$' || to_char (MEDIAN (sp_saleprice), 'FM999999999.99') "Median",
COUNT(sp_saleprice) AS AMOUNT
FROM sales_purchases sp
INNER JOIN sales_persons p
ON ( sp.sp_id = p.sp_id )
WHERE sp_sup IS NULL
GROUP BY p.sp_id, p.sp_fname, p.sp_lname, sp.sp_invoice;