SQL 将 COUNT 和 AVG 查询与 SELECT 结合起来

Posted

技术标签:

【中文标题】SQL 将 COUNT 和 AVG 查询与 SELECT 结合起来【英文标题】:SQL combine COUNT and AVG query with SELECT 【发布时间】:2011-11-17 01:39:34 【问题描述】:

我需要获取特定用户的平均评分和评分总数,然后还要选择所有单个评分(rating_value、rating_text、creator):

$rating_query = mysql_query("SELECT COUNT(1) as rating_count 
,AVG(rating_value), rating_value, rating_text, creator
FROM user_rating WHERE rated_user = $user_id");

此查询将返回每行的 COUNT(1) 结果和 AVG(rating_value),但我只需要这些值一次。

有没有办法在不进行 2 次单独查询的情况下做到这一点?

【问题讨论】:

Is there any way to do this without making 2 separate queries? 为什么要在一个查询中包含这个? rating_countAVG(rating_value) 结果将针对每一行重复。不妨查询一次。 如果您提供您正在寻找的输出类型的样本,可以帮助人们想象您正在尝试完成的事情。 【参考方案1】:

可能有一个我不知道的技巧,但我认为这不可能在单个查询中完成。如果这对您有意义,您可以尝试使用 GROUP BY 子句,但我猜它可能与您使用的列名无关。任何关系都需要在任何给定的行和列上都有一个原子值,即使该值为空。您要求的是每行中的第 1 列和第 2 列,但第一列没有价值,我再次认为这是不可能的。

【讨论】:

以上是关于SQL 将 COUNT 和 AVG 查询与 SELECT 结合起来的主要内容,如果未能解决你的问题,请参考以下文章

LINQ to SQL语句之Select/Distinct和Count/Sum/Min/Max/Avg (转)

orcal - 分组

SQL——连接查询聚合函数开窗函数

avg和count可以在sql中一起工作吗?

SQL分组查询

sql