Я пытаюсь выяснить, на каком языке пользователь отвечает больше всего, а возврат user_id
, language_id
, они отвечают в большинстве случаев и сколько раз у них есть ответы.Использование MAX() и COUNT() в том же запросе
Я начал SELECT
ING таблицы/суб-таблица, которая возвращает эти результаты:
Table: `sub-selected`
`user_id` `language_id` `answers`
1 1 1
2 1 1
1 2 5
2 2 2
1 4 3
1 5 1
Эта таблица возвращающую user_id
, в language_id
, и сколько раз language_id
было отвечено пользователем. Я использовал этот запрос, чтобы получить его:
SELECT t1.user_id, t2.to_language_id, COUNT(t2.to_language_id) as answers
FROM translation_results as t1
LEFT JOIN translations as t2
ON t2.translation_id = t1.translation_id
GROUP BY t2.to_language_id, t1.user_id
структура таблицы:
Table: `translations`
`translation_id` `from_phrase_id` `to_language_id`
Table: `translation_results`
`translation_id` `result_id` PRI-AI `user_id`
В translations
таблице хранятся все переводы запрошенные, и translation_results таблице хранятся ответы на эти переводы и соответствующие user_id
,
Таким образом, чтобы подвести итог таблицы и получить user_id, их наиболее ответил language_id
, и сколько раз они ответили, что language_id
, я использовал:
SELECT t1.user_id, t1.to_language_id, MAX(t1.answers)
FROM (
//The sub-table
SELECT t1.user_id, t2.to_language_id, COUNT(t2.to_language_id) as answers
FROM translation_results as t1
LEFT JOIN translations as t2
ON t2.translation_id = t1.translation_id
GROUP BY t2.to_language_id, t1.user_id
) as t1
GROUP BY t1.user_id, t1.to_language_id
Но это не свернуть таблицу в желаемая структура и вместо этого возвращает:
Table: `sub-selected`
`user_id` `language_id` `answers`
1 1 1
1 2 5
1 4 3
1 5 1
2 1 1
2 2 2
Я знаю, что это зависит от группы по из two clauses
, но если я только группа по user_id и не включают в себя to_language_id в отдельных моих колонках, я не могу знать, какие respectiv e language_id - наиболее ответивший. Я также пробовал подзапросы и несколько подключений, но я считаю, что мне постоянно нужно использовать MAX(t1.answers)
, независимо от выбранных столбцов, и таким образом разрушает мои надежды на совпадение group by
. Как я могу свернуть запрос правильно, а не group by
найти все уникальные комбинации MAX()
user_id
и to_language_id
?
Привет вы можете создать [SQL Fiddle] (http://sqlfiddle.com/) с некоторыми данными и добавить к вашему вопросу желаемый результат? tnx –