Привет, у меня есть таблица 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. Но мне интересно узнать, смогу ли я сделать это с помощью одного запроса. Например, где "article_user_rating> 0" в SUM (). Я уверен, что видел что-то подобное и раньше, но не могу найти по этому поводу документации.
article_visited_article_id
(1) и группируете поarticle_visited_user_id
, но комбинация этих двух столбцов является уникальным ключом в таблице, поэтому это означает, что у вас когда-либо появится только одна строка для каждого пользователя.GROUP BY
никогда не группирует строки. Что именно вы пытаетесь выбрать? Средний рейтинг той или иной статьи? - person Chad Birch   schedule 10.03.2010