Reputation: 159
SELECT
id
, insId
, MAX(avgRating) as avgRating
FROM reviews
WHERE status='1'
GROUP BY insId
this query returns all reviews grouped by insId but id is not corresponding to this.
Upvotes: 0
Views: 429
Reputation: 59
You can try this out:
SELECT id,
insId,
MAX(avgRating) as avgRating
FROM reviews
WHERE status='1'
GROUP BY id, insId
Upvotes: 0
Reputation: 11602
You need to use a self INNER JOIN to get the results you need.
SELECT
reviews.id
, reviews_max.insId
, reviews_max.maxAvgRating
FROM (
SELECT
insId
, MAX(avgRating) AS maxAvgRating
FROM
reviews
WHERE
status = '1'
GROUP BY
insId
) AS reviews_max
INNER JOIN
reviews
ON
reviews.insId = reviews_max.insId
AND
reviews.avgRating = reviews_max.maxAvgRating
Upvotes: 1
Reputation: 5637
Try this:
SELECT
id
, insId
, MAX(avgRating) as avgRating
FROM reviews
WHERE status='1'
GROUP BY id
Upvotes: 0