SQL написание пользовательского запроса - PullRequest
0 голосов
/ 30 октября 2018

Мне нужно написать SQL-запрос, который генерирует имя самой популярной истории для каждого пользователя (согласно общему количеству просмотров). Вот некоторые примеры данных:

story_name | user  | age | reading_counts
-----------|-------|-----|---------------
story 1    | user1 | 4   | 12
story 2    | user2 | 6   | 14
story 4    | user1 | 4   | 15

Это то, что у меня есть, но я не думаю, что это правильно:

Select *
From mytable
where (story_name,reading_counts)
IN (Select id, Max(reading_counts)
      FROM mytable
      Group BY user
)

Ответы [ 2 ]

0 голосов
/ 30 октября 2018
  • В производной таблице вы можете сначала определить максимальное значение reading_counts для каждого пользователя (Group By с Max())
  • Теперь просто присоедините этот набор результатов к основной таблице на user и reading_counts, чтобы получить строку, соответствующую максимуму reading_counts для пользователя.

Попробуйте следующий запрос:

SELECT 
  t1.* 
FROM mytable AS t1 
JOIN 
(
  SELECT t2.user, 
         MAX(t2.reading_counts) AS max_count 
  FROM mytable AS t2
  GROUP BY t2.user 
) AS dt 
  ON dt.user = t1.user AND 
     dt.max_count = t1.reading_counts 
0 голосов
/ 30 октября 2018
SELECT * 
FROM mytable
WHERE user IN
(SELECT user, max(reading_counts)
FROM mytable
GROUP BY user)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...