ふさわしいタイトルを見つけるのは難しいと思いました。簡単にするために、次の表があるとしましょう。
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の少なくとも70%の評価を持っているが、4または5の評価を持っていない人のことです。
したがって、私の例の表では、ID 1の料理人は合計10の評価を持ち、そのうち7つはタイプ1、2、3です。3つだけがタイプ4または5です。したがって、ID1の料理人は「良い」料理人になります。 、および出力は、適切な評価の数を含む料理人の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%の要件は含まれていません。