我有以下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