Reputation: 3
I'm a SQL noob that's trying to solve this group by issue. When I run it it throws me "not a group by expression". I've tried omitting fields, removing column heading syntax and it still wont run. I'm at lost as to where the issue is. Let me know if you'd like me to reformat into something prettier!
SELECT owner.owner_first_name,
owner.owner_last_name AS NAME,
owner.owner_phone AS PHONE,
pet.pet_name,
Sum(res.reservation_end_date - res.reservation_start_date) AS NumDays
FROM hvk_pet pet
INNER JOIN hvk_dog dog
ON pet.pet_number = dog.pet_pet_number
INNER JOIN hvk_pet_reservation pRes
ON pRes.pet_pet_number = pet.pet_number
INNER JOIN hvk_reservation res
ON res.reservation_number = pRes.res_reservation_number
INNER JOIN hvk_owner owner
ON owner.owner_number = pet.own_owner_number
GROUP BY owner.owner_first_name,
owner.owner_last_name,
owner.owner_phone,
pet.pet_name
HAVING res.reservation_end_date - To_date('30-NOV-15', 'dd/mm/yy') <= 0
AND Sum(res.reservation_end_date - res.reservation_start_date) >= ALL
(SELECT Sum(res.reservation_end_date - res.reservation_start_date)
FROM
hvk_reservation res)
Upvotes: 0
Views: 84
Reputation: 62831
Well, your error is coming from the following:
HAVING res.reservation_end_date - To_date('30-NOV-15', 'dd/mm/yy') <= 0
res.reservation_end_date
is not in the group by
clause. Move that into the where
criteria and your error should go away.
With that said, I'm not sure your query will ever return any results. You're checking to see if the sum of a subset of values is greater than the sum of all the values -- not likely.
Upvotes: 3