我有以下SQL语句:SQL GROUP BY多个领域
SELECT COUNT(r.id) as ratings_count, AVG(r.rating) as average_rating, b.id, b.bpm, b.producer, b.name,
(SELECT p.price FROM beats_pricing as p WHERE p.license = 1 AND p.beat_id = b.id) as price_1,
(SELECT p.price FROM beats_pricing as p WHERE p.license = 2 AND p.beat_id = b.id) as price_2
FROM beat_ratings AS r
INNER JOIN beats AS b
ON b.id = r.beat_id
WHERE b.active = 1
GROUP BY r.beat_id
HAVING price_1 > 0
ORDER BY average_rating DESC, ratings_count DESC
LIMIT 50
我有beats
一个表,其中有多个排在beat_ratings
每个节拍这是个人5个星级评分表。此SQL语句用于获得评分最高的beats
。我还将r.beat_id
分组以确保每个beat
只返回一行。
每个节拍有一个b.producer
,我只想为每个producer
返回一个beat
。我试着将它添加到GROUP BY
GROUP BY r.beat_id, b.producer
但这返回同样的结果。如何根据b.producer
字段分组或仅返回唯一行?
如果生产者有多个节拍,其中一个应该返回? – Barmar
@Barmar最受好评的节拍。 – Wasim