总和和按顺序分组的问题 [英] Problem with grouping sum and order by sum

查看:87
本文介绍了总和和按顺序分组的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

美好的一天



我需要按用户分组,子类别然后总计每个用户的类别总数,然后按每个用户的总类别数量排序获取前10名用户基于每个用户的总类别数量总和







我遇到最困难的10个用户总计每个用户的类别总数



我尝试过:



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

解决方案

我根据您的查询创建了自己的架构因为我没有任何样本数据,但看看是否有效。



我所做的是为12个用户创建了垃圾数据,你会发现这个查询应该是排除user2和user12我相信。



如果这不是你想要的,请在你的问题中使用改进的问题链接来更新样本架构和一些示例数据项。< br $>


   -    SELECT user,子类别,count(orderID)计数来自用户的订单组,带有汇总的子类别订购BY 1  



DECLARE @ Order TABLE

Id < span class =code-keyword> INT IDENTITY 1 1 NOT NULL PRIMARY KEY
用户名 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 ' < span class =code-string> user1',' 1' 1
INSERT INTO @ Order (Username,SubCategory,OrderId) VALUES ' user1'' 1' 1
INSERT INTO @ Order (用户名,子类别,OrderId) VALUES ' user2'' 1' 1
INSERT INTO @ Order (用户名,子类别,OrderId) VALUES (< span class =code-string>' user2'' 1' 1
INSERT INTO @ Order (用户名,子类别,OrderId) VALUES ' user2'' 1' 1
INSERT INTO @ Order (用户名,子类别,OrderId) VALUES ' user3'' 1' 1
INSERT INTO @ Order (用户名,子类别,OrderId) VALUES ' user3'' 1' 1
INSERT INTO @ Order (用户名,子类别,OrderId) VALUES ' user3' ' 1' 1
INSERT INTO @ Order (用户名,子类别,OrderId) VALUES ' user4'' 1' 1
INSERT INTO @ Order (用户名,子类别,订单Id) VALUES ' user4'' 1' 1
INSERT INTO @ Order (用户名,SubCategory,OrderId) VALUES ' user4'' 1' 1
INSERT INTO @ Order (Username,SubCategory,OrderId) VALUES ' user4 '' 1' 1
INSERT INTO @ Order (用户名,子类别, OrderId) VALUES ' user4'' 1' 1
INSERT INTO @ Order (用户名,SubCategory,OrderId) VALUES ' user5'' 1' 1
INSERT INTO @ Order (Username,SubCategory,OrderId) VALUES ' user5'' 1' 1
INSERT INTO @ Order (用户名,子类别,OrderId) VALUES ' user5'' 1' 1
INSERT INTO @ Order (Username,SubCategory,OrderId) VALUES ' user5'' 1' 1
INSERT INTO @ Order (用户名,子类别,OrderId) VALUES ' user5'' 1' 1
INSERT INTO @ Order (用户名,子类别,OrderId) VALUES ' user5'' 1' 1
INSERT INTO @ Order (用户名,子类别,OrderId) VALUES ' user5'' 1' 1
INSERT INTO @ Order (用户名,子类别,OrderId) VALUES ' user6'' 1' 1
INSERT INTO @ Order (用户名,子类别,OrderId) VALUES ' user6'' 1' 1
INSERT INTO @ Order (用户名,子类别,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 (用户名,子类别,OrderId) VALUES ' user6'' 1' 1
INSERT INTO @ Order (Username,SubCategory,OrderId) VALUES ' user6'' 1' 1
INSERT INTO @ Order (用户名,子类别,OrderId ) VALUES ' user6'' 1' 1
INSERT INTO @订单(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 (用户名,子类别,OrderId) VALUES ' user7'' 1' 1
INSERT INTO @ Order (用户名,子类别,OrderId) VALUES ' user8'' 1',< span class =code-digit> 1 )
INSERT INTO < span class =code-sdkkeyword> @ Order (Username,SubCategory,OrderId) VALUES ' user8'' 1' 1
INSERT INTO @ Order (用户名,子类别,OrderId) VALUES ' user8'' 1' 1
INSERT INTO @ Order (用户名,子类别,OrderId) VALUES
' user9'' 1' 1
INSERT INTO @ Order (用户名,子类别,OrderId) VALUES ' user9'' 1' 1
INSERT INTO @ Order (用户名,子类别,OrderId) VALUES ' user9'' 1' 1
INSERT INTO @ Order (用户名,子类别,OrderId) VALUES ' user9'' < span class =code-string> 1', 1
INSERT INTO @ Order (用户名,子类别,OrderId) VALUES ' user9'' 1' 1
INSERT INTO @ Order (用户名,子类别,OrderId) VALUES ' user10'' 1' 1
INSERT INTO @ Order (用户名,子类别,OrderId) VALUES ' user10'' 1' 1
INSERT INTO @ Order ( Username,SubCategory,OrderId) VALUES ' user10'' 1' 1
INSERT INTO @ Order (使用rname,SubCategory,OrderId) VALUES ' user11'' 1' 1
INSERT INTO @ Order (Username,SubCategory,OrderId) VALUES ' user11'' 1' 1
INSERT INTO @订单(Username,SubCategory,OrderId) VALUES ' user11'' 1' 1
INSERT INTO @ Order (Username,SubCategory,OrderId) VALUES ' < span class =code-string> user11',' 1' 1
INSERT INTO @ Order (Username,SubCategory,OrderId) VALUES ' user12'' 1' 1
INSERT INTO @ Order (用户名,子类别,OrderId) VALUES ' user12'' 1' 1


- 按子类别获取前10名
SELECT
TOP 10
用户名,
COUNT(*)
FROM @ Order
GROUP BY 用户名,子类别
ORDER BY COUNT( *) DESC


- 按子类别和orderid获取前10名
SELECT
TOP 10
用户名,
COUNT(*)
FROM @Order
GROUP BY 用户名,SubCategory,OrderId
ORDER BY COUNT(*) DESC


Good day

I need to group by user,Subcategory then sum total category counts per user and then order by sum category count per user desc get top 10 users based on sum total category counts per user



I am having trouble get the 10 users with most sum total category counts per user

What I have tried:

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

解决方案

I made my own schema based on your query as I don't have any sample data but see if this works.

What i did is created crap data for 12 users and you'll notice that this query should exclude user2 and user12 i believe.

If this isn't what you are looking for, use improve question link in your question to update it with sample schema and a few example data items.

--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


这篇关于总和和按顺序分组的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆