php mysql查询前5个平均列
我有一张照片排名表。我想根据3列(评级1、2、3)的平均值输出每个类别前5张照片的id 假设我有以下表格列(photoID、rating1、rating2、rating3)php mysql查询前5个平均列,php,mysql,Php,Mysql,我有一张照片排名表。我想根据3列(评级1、2、3)的平均值输出每个类别前5张照片的id 假设我有以下表格列(photoID、rating1、rating2、rating3) 默认情况下,MySql中的记录已按升序返回,但您可能希望使用DESC关键字,而不是ASC。如果您试图选择前5名,为什么要对评级1列取平均值 重读问题,重新提交新答案 $sth = "SELECT * FROM pics ORDER BY (rating1 + rating2 + rating3) desc LIMIT 5";
默认情况下,MySql中的记录已按升序返回,但您可能希望使用
DESC
关键字,而不是ASC
。如果您试图选择前5名,为什么要对评级1
列取平均值
重读问题,重新提交新答案
$sth = "SELECT * FROM pics ORDER BY (rating1 + rating2 + rating3) desc LIMIT 5";
你解释问题的方式不清楚,这可能是你想要的:
SELECT photoID, AVG((rating1+rating2+rating3)/3) as rating
FROM votes GROUP BY photoID ORDER BY rating DESC LIMIT 5
表中的类别在哪里?评级1、评级2、评级3是类别。每一行代表一位选民。每张照片可能有10个评分,我想用所有10个评分的平均值找出最高的5个评分。假设我有以下数据photoID 1 rating1 4;类光1比率1;类光2级1 10;类光2比率1 8。我希望输出是photoID 2,然后是photoID 1(即平均等级1分别为9和2.5)
$sth = "SELECT * FROM pics ORDER BY (rating1 + rating2 + rating3) desc LIMIT 5";
SELECT photoID, AVG((rating1+rating2+rating3)/3) as rating
FROM votes GROUP BY photoID ORDER BY rating DESC LIMIT 5
SELECT 1 AS category
, photoID
, AVG(rating1) AS avg_rating
FROM votes
GROUP BY photoID
ORDER BY avg_rating DESC
LIMIT 5
UNION ALL
SELECT 2 AS category
, photoID
, AVG(rating2) AS avg_rating
FROM votes
GROUP BY photoID
ORDER BY avg_rating DESC
LIMIT 5
UNION ALL
SELECT 3 AS category
, photoID
, AVG(rating3) AS avg_rating
FROM votes
GROUP BY photoID
ORDER BY avg_rating DESC
LIMIT 5