查找不重复的统计数据的sql语句的写法
2011-03-17 08:42
453 查看
查找不重复的统计数据的sql语句的写法
转http://wangminghui.com/bbs/redirect.php?tid=290&goto=lastpost例表如下:
表名:MyTest
TID Field_1 Field_2 Field_3
1 1 A A
2 1 A A
3 2 A A
4 2 B A
5 3 B B
6 3 B B
7 4 C B
8 4 C B
9 1 A A
1、查找表中的一个字段,重复的只找一个:
Select Distinct Field_1 From MyTest
返回结果为:
1
2
3
4
2、查找表中的多个字段,其中某个字段不重复:
Select * From MyTest Where RowID In (Select Min(RowID) From MyTest Group By Field_1)
返回结果为:
结果为:
1 1 A A
3 2 A A
5 3 B B
7 4 C B
其中RowID为Oracle中的虚拟Column用来指向表中一个Row的存放地址,改为其它的不能运行.
Min方法若改为Max时返回结果如下:
6 3 B B
8 4 C B
9 1 A A
10 2 B A
3、查询并统计该字段的数量:
Select Field_1,Count(Field_1) From MyTest Group By Field_1
返回结果为:
1 3
2 3
3 2
4 2
注意:Group By 哪个字段只能查找哪个字段和该字段的数量。若要同时搜索其它字段就报错。如:
Select Field_2,Count(Field_1) From MyTest Group By Field_1或
Select Field_1,Field_2,Count(Field_1) From MyTest Group By Field_1
就会出错!
原因可能是:搜索的结果是一组组的数据。在每一组数据中,Field_2有很多,所以不能搜索出唯一的一个值。
4、从两个表中查询并统计数据:
表T_OverTime字段
Int TID = 0;//加班代码
Float Days = 0;//工日数
表T_OverTimePersonnel字段
Int TID = 0;//加班人员代码
Int OverTimeID = 0;//加班代码
Int UserID=0;//用户ID
统计每个用户的加班工日数
统计每个用户的加班工日数
Select b.UserID,Sum(a.Days) From T_OverTime a,T_OverTimePersonnel b Where a.TID=b.OverTimeID Group By b.UserID
以上是在oracle数据库中测试的结果。在其它数据库中不知是否能运行。欢迎大家提供更好更通用的方法。
5、按多个字段分组并统计:
Select Field_1,Field_2,Count(*) As Expr1 From MyTest Group By Field_1,Field_2
返回结果为:
Field_1 Field_2 Count
1 A 3
2 A 1
2 B 2
3 B 2
4 C 2
即按Field_1, Field_2分组后Field_1, Field_2的内容和每组中记录的数量。
若:Select Field_1, Field_2, Count(Distinct Field_3) As Expr1 From MyTest Group By Field_1, Field_2
返回结果为:
Field_1 Field_2 Count
1 A 1
2 A 1
2 B 1
3 B 1
4 C 1
若将第7条记录改为 7 4 C C
则结果为:
Field_1 Field_2 Count
1 A 1
2 A 1
2 B 1
3 B 1
4 C 2
即按Field_1, Field_2分组后Field_1, Field2的内容和每组中Field_3不重复的记录数。
相关文章推荐
- 查找不重复的统计数据的sql语句的写法
- SQL语句-统计全部数据,过滤掉其中两个字段同时重复的记录
- SQL中统计数据的查询语句写法
- 使用SQL语句对重复记录查询、统计重复次数、删除重复数据
- SQL不重复查找统计数据
- Oracle 删除重复数据只留一条 查询及删除重复记录的SQL语句 1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断 select * from 表 wher
- sql不重复的查找统计数据(经典)
- Oracle 删除重复数据只留一条 查询及删除重复记录的SQL语句 1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断 select * from 表 wher
- 使用SQL语句对重复记录查询、统计重复次数、删除重复数据
- SQL语句-统计全部数据,过滤掉其中两个字段同时重复的记录
- sql不重复的查找统计数据
- mysql中获取一天、一周、一月时间数据的各种sql语句写法
- 关于mysql中删除重复记录,并保留重复数据中的一条数据的SQL语句理解
- 查询和删除表中重复数据sql语句
- SQL SERVER 取重复值和取某列第N大值得行数据的 SQL语句
- SQL语句删除单表中的重复数据
- 分享[ASP.NET]SQL语句统计每天、每月、每年的数据 作者:吴立星
- 常用SQL语句实例(含过滤及删除重复数据、导入导出数据等)
- SQL不重复查找数据及把一列多行内容拼成一行
- sql语句 找出重复的数据(多列) SQL2005 引擎有更好的做法【转】