Reputation: 13
These are my tables:
table BUSINESS
BUSINESSUSERNAME|BUSINESSPASSWORD|BUSINESSNAME|
Res1 |123 |Cafe |
Res2 |456 |Foodtruck |
table USER
USERNAME|USERPASSWORD|NAME|
user1 |123 |mr.1|
user2 |234 |mr.2|
table FOOD
FOODID|FOODNAME|FOODPRICE|BUSINESSUSERNAME|
1 |CAKE | 5 |Res1 |
2 |SHAKE | 2 |Res2 |
3 |COLA | 3 |Res1 |
table FOOD_RATING
FOODREVIEWID|FOODID|FOODRATING|BUSINESSUSERNAME|USERNAME|
1 |2 |3 |Res2 |user1 |
2 |2 |5 |Res2 |user2 |
3 |1 |4 |Res1 |user1 |
4 |3 |1 |Res1 |user1 |
I would like to get the top 10 foods based on average rating:
RANK|FOODNAME|FODPRICE|AVGRATING|BUSINESSUSERNAME
1 |CAKE |5 |4 |Res1
2 |SHAKE |3 |4 |Res2
3 |COLA |3 |1 |Res1
.
.
.
10
Upvotes: 0
Views: 43
Reputation: 1634
EDIT: Added SELECT TOP 10
The ORDER BY
comes after GROUP BY
SELECT TOP 10 FOOD.FOODNAME, FOOD.FOODPRICE
, IIF(Round(Avg(FOODRATING), 1) IS NULL, 0, Round(Avg(FOODRATING), 1)) AS FOODAVGRATING
FROM FOOD
LEFT JOIN FOOD_REVIEW ON FOOD.FOODID = FOOD_REVIEW.FOODID
WHERE (((FOOD.BUSINESSUSERNAME) = "someusername"))
GROUP BY FOOD.FOODNAME, FOOD.FOODPRICE
ORDER BY IIF(Round(Avg(FOODRATING), 1) IS NULL, 0, Round(Avg(FOODRATING), 1)) DESC;
Upvotes: 1