Sql 获取列和id的最大值
我在一个表中有以下列 电影ID-点-类别ID 1-5-1 1-6-2 1-4-3 2-7-1 正如你所看到的,每部电影都有不止一个类别。我想找到得分最高的电影。但这一点必须是所有类别的平均值。下面的linq查询找到了我想要的最大值,但我也需要电影IDSql 获取列和id的最大值,sql,linq,Sql,Linq,我在一个表中有以下列 电影ID-点-类别ID 1-5-1 1-6-2 1-4-3 2-7-1 正如你所看到的,每部电影都有不止一个类别。我想找到得分最高的电影。但这一点必须是所有类别的平均值。下面的linq查询找到了我想要的最大值,但我也需要电影ID from tmp in (from tmp in ( (from Rating in db.Rating where Rating.DistrictID == 1 group Rating by new {
from tmp in
(from tmp in (
(from Rating in db.Rating
where
Rating.DistrictID == 1
group Rating by new {
Rating.MovieID
} into g
select new {
g.Key.MovieID,
avg_point = (double?)g.Average(p => p.Point)
}))
select new {
tmp.avg_point,
Dummy = "x"
})
group tmp by new { tmp.Dummy } into g
select new {
max_point = (double?)g.Max(p => p.avg_point)
}
-------------------------------答复
感谢@Sari Rahal。我提出以下linq查询:
(from tmp in (
(from Rating in db.Rating
where
Rating.DistrictID == 1
group Rating by new {
Rating.MovieID
} into g
select new {
g.Key.MovieID,
avg_point = (double?)g.Average(p => p.Point)
}))
orderby
tmp.avg_point descending
select new {
tmp.MovieID,
tmp.avg_point
}).Take(1)
您的内部查询应该足够了,只需在平均值之后调用
Max()
from Rating in db.Rating
where
Rating.DistrictID == 1
group Rating by new {
Rating.MovieID
} into g
select new {
g.Key.MovieID,
avg_point = (double?)g.Average(p => p.Point).Max()
}
您只需按顺序和限制即可完成此操作。您按电影ID订购,并且限制为1将为您提供电影的信息和最多分数。别忘了根据您的喜好和缩放方式将其更改为升序或降序
Select MovieID, Point Ordery By MovieID Limit 1