我有一个包含三列(id、productID和feedback(的表,其中包含反馈:
id | productID | feedback
.............................
1 | 1000 | 5
2 | 1000 | 4
3 | 1000 | 3
4 | 1001 | 5
5 | 1002 | 5
6 | 1002 | 5
7 | 1003 | 4
8 | 1003 | 5
9 | 1003 | 5
我想选择一个至少有3个反馈的productID,并且没有一个反馈的值小于4。在这种情况下,1003是我想要得到的。
select t.prodid,count(t.prodid) from table as t
where not exists
(select 1 from table as t2 where t2.prodid=t.prodid and t2.feedback<4)
group by t.prodid
having count(*)>=3
使用聚合:
SELECT productID
FROM yourTable
GROUP BY productID
HAVING SUM(feedback > 3) >= 3;
我认为您希望在这里使用MIN来满足要求。
SELECT
productID
FROM
tableName
GROUP BY
productID
HAVING
MIN(feedback) >= 3;