Mysql 如何检查一列是否有两个以上的项,以及是否有超过SQL中avg()的项?

Mysql 如何检查一列是否有两个以上的项,以及是否有超过SQL中avg()的项?,mysql,sql,database,Mysql,Sql,Database,我有四张桌子 • user(id, name) • item(id, description, category, price) • buys(user, item, price) • rates(user, item, rating) 来自buys和rates的用户和项目是外键。 我不知道如何设置一个条件,把只有一个评分的项目去掉,只对有两个或两个以上评分的项目进行平均 这是练习中的问题 (对于每个至少有两个评分的项目,请查找该项目的平均评分。) 这是我的密码 SELECT

我有四张桌子

•   user(id, name)
•   item(id, description, category, price)
•   buys(user, item, price)
•   rates(user, item, rating)
来自buys和rates的用户和项目是外键。 我不知道如何设置一个条件,把只有一个评分的项目去掉,只对有两个或两个以上评分的项目进行平均

这是练习中的问题 (对于每个至少有两个评分的项目,请查找该项目的平均评分。)

这是我的密码

 SELECT count(distinct rating) as rating, avg(rating) as average
    from rates
    where rates.rating is not null
    group by item

您可以检查该项是否在具有以下条件的情况下多次出现在表中:

SELECT COUNT(DISTINCT rating) AS rating, AVG(rating) AS average
FROM rates
WHERE rates.rating IS NOT NULL
GROUP BY item
HAVING COUNT(rates.item) >= 2

请看这里:

请提供样本数据和所需结果。现在还不清楚你对结果集的想法。我想要的是从用户那里获得所有超过2个评分的项目。如果一个项目有两个以上的评分,我需要该评分的平均值。例如如果一个用户对项目5进行了评级,而另一个用户对同一项目4进行了评级。然后我要做该项的平均值(4+5)/2。4+5不超过2分。我所说的4+5是指第一个用户对该项目的评分为4星,另一个用户对同一项目的评分为5星。所以我需要这个项目的平均评分,它是4+5除以评分数,在这个例子中是2。你不知道哪个项目有哪个评分,这并不困扰你。@草莓,你说哪个评分是什么意思?平均值的计算在AVG()函数中