Сокращение строк на основе сгруппированного MAX () - PullRequest
0 голосов
/ 10 мая 2018

Царапая мою голову на этот день.

Необходимо сократить список фильмов и жанров до списка фильмов и жанров на основе сгруппированных просмотров max (), связанных с фильмом.

Таким образом, преобразование 'a' в 'b' здесь с помощью T-SQL
(Фиолетовые строки являются допустимыми для вывода таблицы: Изображение )

+---------+--------------+-------+
|  Title  |    Genre     | Views |
+---------+--------------+-------+
| Mad Max | Mockumentary |     1 |
| Mad Max | Sci-fi       |   169 |
| Mad Max | Documentary  |    32 |
| Titanic | Drama        |     6 |
| E.T.    | Sci-fi       |    34 |
| E.T.    | Sci-fi       |     2 |
| E.T.    | Horror       |     1 |
| Taken   | Triller      |    60 |
| Taken   | Crime Drama  |     2 |
| Taken   | Triller      |    40 |
| Taken   | Crime Drama  |    15 |
+---------+--------------+-------+

Ожидаемый результат

+---------+---------+-------+
|  Title  |  Genre  | Views |
+---------+---------+-------+
| Mad Max | Sci-fi  |   169 |
| Titanic | Drama   |     6 |
| E.T.    | Sci-fi  |    36 |
| Taken   | Triller |   100 |
+---------+---------+-------+

1 Ответ

0 голосов
/ 10 мая 2018

Попробуйте это ...

SELECT title, genre, views
FROM   (SELECT title, 
               genre, 
               Sum(views) AS views, 
               ROW_NUMBER() OVER (PARTITION BY title ORDER BY Sum(views) DESC) AS ranks 
        FROM   tablename 
        GROUP  BY title, genre) tmp 
WHERE ranks < 2

выход

+---------+---------+-------+
|  title  |  genre  | views |
+---------+---------+-------+
| E.T.    | Sci-fi  |    36 |
| Mad Max | Sci-fi  |   169 |
| Taken   | Triller |   100 |
| Titanic | Drama   |     6 |
+---------+---------+-------+

Онлайн демо: http://www.sqlfiddle.com/#!18/e34fe/1/0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...