首页 新闻 搜索 专区 学院

sql 怎么进行查询之后得到的结果集进行分组,后对得到的分组进行排序,并输出该分组的最大值?

0
悬赏园豆:15 [已解决问题] 解决于 2013-03-14 10:31

sql 怎么进行查询之后得到的结果集进行分组,后对得到的分组进行排序,并输出该分组的最大值?

度郎的主页 度郎 | 初学一级 | 园豆:3
提问于:2013-01-10 11:16
< >
分享
最佳答案
0

select top 1 字段,count(*) from 表 group by 字段 order by count(*) desc

收获园豆:5
Rich.T | 老鸟四级 |园豆:3440 | 2013-01-10 11:28
其他回答(4)
1

你这个相当于select *,[表] from [表] 当然不行了,另外我不是太明白你的意思  

是分组 然后组内排名吗?

SELECT RANK() OVER (PARTITION BY OrderID ORDER BY PurchaseCount) AS POS,OrderID,PurchaseCount,* FROM  dbo.TB_PurchaseOrderDetail  

还是这么样子的 描述的清楚点

收获园豆:5
海上将军 | 园豆:306 (菜鸟二级) | 2013-01-10 16:14

我就想先分组后在组内排序取每组第一个。

支持(0) 反对(0) 度郎 | 园豆:3 (初学一级) | 2013-01-11 12:51

@度郎: 

CREATE TABLE #Test(
ID INT,
VALUE VARCHAR(50)
)
--插入组号,对应值(执行3 遍)
INSERT INTO #Test
        ( ID, VALUE )
VALUES  ( 0, -- ID - int
          NEWID()  -- VALUE - varchar(50)
          )
--插入组号,对应值(执行3 遍)
INSERT INTO #Test
        ( ID, VALUE )
VALUES  ( 1, -- ID - int
          NEWID()  -- VALUE - varchar(50)
          )

--取排名为1的数据
SELECT * FROM (
SELECT RANK()OVER(PARTITION BY ID ORDER BY VALUE DESC) AS POS,* FROM  #Test) b
WHERE b.POS=1

支持(0) 反对(0) 海上将军 | 园豆:306 (菜鸟二级) | 2013-01-12 23:16
0


SELECT UserName,MAX(aa) AS age FROM (SELECT * FROM Users WHERE Userid>1) AS t GROUP BY t.UserName

爬上墙头等红杏。 | 园豆:4 (初学一级) | 2013-01-16 16:10
0

row_number可以满足你的需求
示例:

SELECT *, Row_Number() OVER (partition by deptid ORDER BY salary desc) rank FROM employee
收获园豆:5
邀月 | 园豆:25375 (高人七级) | 2013-01-24 11:30
0
大哥,你这题目太抽象了,
完全不知道你在说什么!

WITH
a AS ( SELECT Account , UserName , ROW_NUMBER() OVER ( ORDER BY Account ) AS rowid FROM dbo.frmuser X GROUP BY Account , UserName ) SELECT MAX(rowid) FROM a ORDER BY rowid
dearz | 园豆:588 (小虾三级) | 2013-01-24 18:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册