得到每组前几条数据

原创 2007年03月09日 10:12:00

--得到每组前几条数据
--假設每組Col1中, Col3不會重復

--建立測試環境
Create Table TEST
(Col1 Varchar(10),
 Col2 Varchar(10),
 Col3 Int)
--插入數據
Insert TEST Select 'BD1V','Label', 4
Union All Select 'BD1V', 'BATT', 2
Union All Select 'BD1V', 'ODD', 3
Union All Select 'BD1V', 'HDD', 5
Union All Select 'BD1V', 'LCD', 1
Union All Select 'BD1W','HDD', 3
Union All Select 'BD1W','RAM', 8
Union All Select 'BD1W','TP CABLE', 5
Union All Select 'BD1W','LCD', 6
Union All Select 'BD1W','Label', 2
Union All Select 'BL3', 'LCD CABLE', 7
Union All Select 'BL3', 'LABEL', 6
Union All Select 'BL3', 'LCD', 5
Union All Select 'BL3', 'RAM', 1
Union All Select 'BL3D', 'Label', 4
GO
--測試
--方法一:
Select Col1, Col2, Col3 From TEST A
Where (Select Count(*) From TEST Where Col1 = A.Col1 And Col3 > A.Col3) < 3
Order By Col1, Col3 Desc
--方法二:
Select Col1, Col2, Col3 From TEST A
Where Exists (Select Count(*) From TEST Where Col1 = A.Col1 And Col3 > A.Col3 Having Count(*) < 3)
Order By Col1, Col3 Desc
--方法三:
Select Col1, Col2, Col3 From TEST A
Where Col3 In (Select TOP 3 Col3 From TEST Where Col1 = A.Col1 Order By Col3 Desc)
Order By Col1, Col3 Desc
GO
--刪除測試環境
Drop Table TEST
--結果
/*
Col1  Col2   Col3
BD1V HDD  5
BD1V Label  4
BD1V ODD  3
BD1W RAM  8
BD1W LCD   6
BD1W TP CABLE 5
BL3  LCD CABLE 7
BL3  LABEL  6
BL3  LCD   5
BL3D Label  4
*/

相关文章推荐

mysql分组取每组前几条记录(排序)

[sql] view plaincopy CREATE TABLE `mygoods` (     `goods_id` int(11) unsigned NOT NULL AUTO_...

分组后,取每组的前几条记录

--给个例子参考 --查询每门课程的前2名成绩 CREATE TABLE StudentGrade( stuId CHAR(4),    --学号 subId INT,        --课...

mysql分组取每组前几条记录(排名) 附group by与order by的研究

http://www.jb51.net/article/31590.htm -按某一字段分组取最大(小)值所在行的数据  复制代码代码如下: /*  数据如下:  name ...

sql分组后查找每组的前几条记录语句

常用的sqlserver,mysql,oracle等数据库sql语句都是遵循sql标准,但是每种数据库都有自己的特点。 如果想做到程序兼容性更好,后期维护更方便,还是建议尽量使用各种数据库通用的sql...

利用sql查询每组第一个数据

本文章来至源码世界 http://www.ymsky.net/views/111572.shtml 今天在一个.NET群里看到有个人问如何查找到每组第一个人的全部信息,当时自己也在忙着...

SQL分组取每组前一(或几)条记录(排名)

mysql分组取每组前几条记录(排名) 附group by与order by的研究 http://www.jb51.net/article/31590.htm   --按某一字段分组取最大(小)...
  • hefw1
  • hefw1
  • 2016年07月20日 08:39
  • 309

Postgresql查询每组的前N条记录

表结构如下, [sql] view plaincopy                Table "ytt.t1"    Column |      ...

Oracle分组查询取每组排序后的前N条记录

项目中用到Oracle分组查询取每组排序后的前N条记录,group by 只能返回每个组的单条统计。所以用OVER(PARTITION BY)函数,具体详见baidu.com 建个测试表test_ab...

group by分组后,取每组的前几行

http://blog.csdn.net/zhanghongju/article/details/8450887 http://blog.sina.com.cn/s/blog_492392f0010...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:得到每组前几条数据
举报原因:
原因补充:

(最多只允许输入30个字)