mrDivan Ответов: 1

Проблема с группировкой суммы и порядка по сумме


Хороший день

Мне нужно сгруппировать по пользователю, подкатегории, затем суммировать общее количество категорий на пользователя, а затем заказать по сумме количества категорий на пользователя desc получить топ-10 пользователей на основе общей суммы количества категорий на пользователя



У меня возникли проблемы с получением 10 пользователей с наибольшим общим количеством категорий на одного пользователя

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

Выберите пользователей,подкатегория,граф ("кодзаказа") "отсчет" от группы того пользователя ,подкатегорию с целью свертки по 1

1 Ответов

Рейтинг:
1

David_Wimbley

Я сделал свою собственную схему на основе вашего запроса, так как у меня нет никаких образцов данных, но посмотрите, работает ли это.

То, что я сделал, - это создал дерьмовые данные для 12 пользователей, и вы заметите, что этот запрос должен исключить user2 и user12, я полагаю.

Если это не то, что вы ищете, используйте ссылку улучшить вопрос в своем вопросе, чтобы обновить его с помощью примера схемы и нескольких примеров элементов данных.

--SELECT user,Subcategory,count(orderID) "Count" FROM Order group by user ,Subcategory with Rollup ORDER BY 1 



DECLARE @Order TABLE 
(
	Id INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
	Username varchar(25) NULL,
	SubCategory VARCHAR(50) NULL,
	OrderId INT NULL
);


INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user1','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user1','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user1','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user2','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user2','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user2','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user3','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user3','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user3','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user4','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user4','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user4','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user4','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user4','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user5','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user5','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user5','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user5','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user5','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user5','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user5','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user6','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user6','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user6','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user6','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user6','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user6','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user6','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user6','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user7','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user7','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user7','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user7','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user8','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user8','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user8','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user9','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user9','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user9','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user9','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user9','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user10','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user10','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user10','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user11','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user11','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user11','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user11','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user12','1',1)
INSERT INTO @Order (Username, SubCategory, OrderId) VALUES ('user12','1',1)


--Get top 10 by subcategory
SELECT 
	TOP 10
	Username,
	COUNT(*)
FROM @Order
GROUP BY Username, SubCategory
ORDER BY COUNT(*) DESC


--Get top 10 by subcategory and orderid
SELECT 
	TOP 10
	Username,
	COUNT(*)
FROM @Order
GROUP BY Username, SubCategory, OrderId
ORDER BY COUNT(*) DESC