带有count和sum的单个MySQL查询

时间:2010-03-10 00:02:46

标签: sql mysql count sum

您好我有一个如下所示的SQL表:

CREATE TABLE IF NOT EXISTS `designerswave_article_visited` (
  `article_visited_article_id` smallint(5) NOT NULL,
  `article_visited_user_id` smallint(5) NOT NULL,
  `article_user_rating` tinyint(1) DEFAULT NULL,
  UNIQUE KEY `article_id` (`article_visited_article_id`,`article_visited_user_id`)
)

一个看起来像这样的查询:

SELECT SUM(article_user_rating) AS total_rating, COUNT(article_visited_user_id) AS hits
FROM article_visited
WHERE article_visited_article_id =1
GROUP BY article_visited_user_id

我的问题是如果用户没有对文章进行评级,评级可能为0或NULL。然而,为了获得平均评级,我需要将所有不是0或NULL的评级相加并除以评级总数。

我可以使用where子句轻松完成两个查询。但是我很想知道我是否可以在一个查询中完成它。例如SUM()中的“article_user_rating> 0”。我确定我以前见过类似的东西,但我找不到任何文件。

2 个答案:

答案 0 :(得分:2)

你可以扩展where子句,但正如Chad所说,我不确定这是否真的是你想要的:

SELECT SUM(article_user_rating) AS total_rating, COUNT(article_visited_user_id) AS hits
FROM article_visited
WHERE article_visited_article_id =1 and article_user_rating > 0
GROUP BY article_visited_user_id

答案 1 :(得分:0)

正如您可以阅读here,在MySQL“组函数中忽略NULL值”。然后可以忽略空值。

对于SUM聚合函数,0值可以忽略,因为X+0=X