У меня есть таблица в SQL, который выглядит следующим образом:Как выбрать наиболее частое значение в столбце для каждой группы идентификаторов?
user_id | data1
0 | 6
0 | 6
0 | 6
0 | 1
0 | 1
0 | 2
1 | 5
1 | 5
1 | 3
1 | 3
1 | 3
1 | 7
Я хочу написать запрос, который возвращает два столбца: столбец для идентификатора пользователя, и столбец за то, что наиболее часто встречающееся значение для каждого идентификатора является. В моем примере, для user_id 0, наиболее часто встречающееся значение составляет 6, а для user_id 1, наиболее часто встречающееся значение равно 3. Я хотел бы, чтобы это выглядело, как показано ниже:
user_id | most_frequent_value
0 | 6
1 | 3
Я использую запрос ниже получить наиболее частое значение, но оно выполняется против всей таблицы и возвращает наиболее общее значение для всей таблицы, а не для каждого идентификатора. Что мне нужно добавить к моему запросу, чтобы он смог вернуть наиболее частое значение для каждого идентификатора? Я думаю, мне нужно использовать подзапрос, но я не уверен, как его структурировать.
SELECT user_id, data1 AS most_frequent_value
FROM my_table
GROUP BY user_id, data1
ORDER BY COUNT(*) DESC LIMIT 1
Как насчет ничьей? (т. е. вы добавляете строку '(0, 1)' к вашему примеру, тогда как '6', так и' 1' являются наиболее частым значением, потому что оба они встречаются 3 раза). – pozs