Member 12780090 Ответов: 2

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


Я не получаю желаемого результата

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

код, который я использовал, таков:

Выберите u.name
От пользователей как у запроса: Q
Где именно u.id = q.user_id
Группа по у.наименование имеющие количество(вопрос.функция user_id) = 2
Заказать по u.name;

2 Ответов

Рейтинг:
2

David_Wimbley

Вам придется дать гораздо больше информации о том, каков ваш желаемый результат. Вероятно, вы не видите того, что хотите, так как в вашем запросе есть предложение HAVING. В противном случае ваш запрос выглядит так, как будто он, вероятно, правильный.

См. пример схемы/данных ниже

DECLARE @Users TABLE  (
	Id INT NULL,
	Username VARCHAR(200) NULL
);

DECLARE @Query TABLE (
	UserId INT NULL,
	Query VARCHAR(200) NULL
);

INSERT INTO @Users (Id,Username) VALUES (1,'user1')
INSERT INTO @Users (Id,Username) VALUES (2,'user2')

INSERT INTO @Query (UserId, Query) VALUES (1, 'A');
INSERT INTO @Query (UserId, Query) VALUES (2, 'A');
INSERT INTO @Query (UserId, Query) VALUES (2, 'A');
INSERT INTO @Query (UserId, Query) VALUES (2, 'A');
INSERT INTO @Query (UserId, Query) VALUES (2, 'A');


SELECT 
	A.Username,
	COUNT(*)
FROM @Users AS A
JOIN @Query AS B ON B.UserId = A.Id
GROUP BY A.Username
ORDER BY A.Username


Тогда выход из этого таков

Username	ItemsAnswered
user1	            1
user2	            4



Который заказывается по имени пользователя


Рейтинг:
1

Member 13486869

Выберите u.name от пользователя как u, запрос как q
Где u.id=q.user_id и q.parent_id не равно нулю
Группа по у.наименование имеющие количество(вопрос.функция user_id) = 2
Заказать по u.name;