моя сумма поля sql, используя другое поле, чтобы дифференцировать, а затем отсортировать его - PullRequest
0 голосов
/ 29 сентября 2010

Я хотел бы спросить кое-что о запросе, используя mysql

У меня есть таблица с именем video_stat, а вот поле

CREATE TABLE IF NOT EXISTS `video_stat` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `video_id` int(10) NOT NULL,
  `member_id` int(10) NOT NULL,
  `counter` int(11) NOT NULL,
  `daydate` varchar(15) NOT NULL,
  `monthdate` varchar(10) NOT NULL,
  `epochtime` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1

поле 'counter' будет обновляться за день

и мой вопрос заключается в том, что я хотел бы отсортировать это поле, суммируя счетчик как общее значение для video_id, а затем сортируя их по общему числу для video_id, чтобы затем отобразить список на популярной странице видео. как я могу это сделать?

Я думал, что это будет работать, используя этот запрос:

SELECT SUM( counter ) AS total_viewed, member_id, video_id
FROM member_video_stat

но он только суммирует все в поле счетчика и возвращает одну строку, поскольку часть SUM (счетчик) не учитывается для каждого и конкретного video_id

иллюстрации:

текущая таблица

+--------------+-----------+---------+
| id| video_id | member_id | counter | 
+---+----------+-----------+---------+
| 4 |      6   |       2   |       1 |
| 5 |      9   |       6   |       1 |
| 6 |      12  |       2   |       1 |
| 7 |      6   |       2   |       1 |
| 8 |      12  |       2   |       1 |
+--------------+-----------+---------+

к чему-то вроде

    +----------+-----------+---------+
    | video_id | member_id | total   |
    +----------+-----------+---------+
    |      6   |       2   |       2 |
    |      9   |       6   |       1 |
    |      12  |       2   |       2 |
    +----------+-----------+---------+

1 Ответ

2 голосов
/ 29 сентября 2010

Попробуй

SELECT SUM(counter) AS total_viewed, member_id, video_id
FROM member_video_stat
GROUP BY video_id
ORDER BY total_viewed DESC

Хоа

...