我發現很難找到合適的標題。爲了簡單起見,讓我們說我有下面的表格:比較行並獲得百分比
cook_id cook_rating
1 2
1 1
1 3
1 4
1 2
1 2
1 1
1 3
1 5
1 4
2 5
2 2
現在我想得到'好'廚師的輸出。一個好廚師的評級至少爲1,2或3,但不是4或5的至少70%。
所以在我的示例表中,ID爲1的廚師總共有10個評級,7其中1型,2型和3型。只有3種具有4型或5型。因此,具有ID 1的廚師將是「好」廚師,並且輸出應該是具有良好評級數量的廚師ID。
cook_id cook_rating
1 7
然而,id 2的廚師不滿足我的條件,因此不應該列出。
select cook_id, count(cook_rating) - sum(case when cook_rating = 4 OR cook_rating = 5 then 1 else 0 end) as numberOfGoodRatings from cook
where cook_rating in (1,2,3,4,5)
group by cook_id
order by numberOfGoodRatings desc
不過,這並沒有考慮到一個事實,即有可能是更多的4或5比不錯的收視率,導致負輸出。此外,至少70%的要求不包括在內。
我相信你會對[本文]的解決方案感興趣(http://evanmiller.org/how-not-to-sort-by-average-rating.html)。 – 2012-07-08 16:27:16
不錯的文章,但對我的需求太複雜。在我的情況下,我只想對有用的評分進行排序,如果這個人的評分超過70%。因此,擁有10個好評和0個差等級的人,與1000個好評等級的人相比,價值仍然「低得多」,但有300個爲負值,即使這不是對某人進行評級的好方法。 – 2012-07-08 16:37:01