Member 13347281 Ответов: 2

Напишите запрос, чтобы отобразить имя (имена) пользователя, который ответил/ответил на наибольшее количество запросов, отсортированных по имени.


Он выполняется, но вывод неверен.

Что я уже пробовал:

выберите у.имя пользователя как у запроса: Q где U.ИД=вопрос.группа ид_пользователя у.наименование имеющие количество(вопрос.функция user_id)=2 заказа у.название;

2 Ответов

Рейтинг:
2

OriginalGriff

Это нелегко - или, по крайней мере, нелегко сделать, если вы не хотите группировать и считать все дважды!
Предполагая, что у вас есть две таблицы (что было бы разумным способом сделать это)

Users   : Id, Name, OtherInfo
Queries : Id, UserId, OtherInfoAboutTheQuery

Затем вы можете сделать это с помощью CTE и пары соединений:
WITH AggData (UserId, UserCount)
AS (SELECT UserId, COUNT(UserId) as UserCount FROM Queries GROUP BY UserId) 
SELECT UserID, name FROM Users u
JOIN AggData ag ON u.Id = ag.UserID
JOIN (SELECT MAX(UserCount) As MaxCount From AggData) mx ON mx.MaxCount = ag.UserCount


Рейтинг:
1

Michael_Davies

Взгляните на функцию MAX() ;

Функции SQL MIN() и MAX() [^]