7.表中数据的排序与分组

原创 2018年04月17日 09:32:54

我这些学习笔记,记录的都是我自己认为的知识点,可能以后再看的时候还要翻书,但是可以用来定位到准确的书中示例的位置,减少翻书重找的时间,利于自身知识体系的搭建。                   self-transcendence

第7章 表中数据的排序与分组

 

7.1 使用order by 子句对数据记录进行排序

Order by 列名,列名2  asc|desc

Asc升序,desc降序,默认为asc

空值的行,asc时会排在最先,desc时会排在最后。

列名可以用列的序号代替,该列如果是第五列,列名就可以用5代替。

用来排序的这个列名,可以不用出现在select后面。

 

 

 

7.2 常用的聚合函数

常用的聚合函数有countmaxminsumavg

Countsumavg中可以使用distinct关键字去除指定列中的重复项然后函数不计算重复值。

Maxmin中的列是字符型,则按照首字母a-z的顺序排序,首字母相同就比较第二个字母,如果是汉字就按照汉语拼音的全拼来排序。

Sumavg函数中表达式只能是数字类型的值。

除了count*)外,其他的函数计算时都忽略null

Count函数计算表中的总行数。

使用聚合函数的时候,必须要使用group by

 

 

 

7.3 使用group by对表中的数据进行分组

单列多列都可以分组。在group by之后还可以使用having对结果进行进一步筛选。

例:group by 列名1,列名2  having  money  >  2000

Where是针对分组之前数据的条件,having是针对分组之后的数据的条件。

Having筛选的列,可以不用出现在select后面。

Group by分组的列,如果有null值,null就会成为分组中的一组。

 

 

 

7.4 使用rollup关键字统计数据

Rollup相当于总计操作,在所有数据最后生成一列总数,计算数值列。

mysqlsqlserver中使用with rollup

例:group by dept,pro with rollup

oracle使用rollup

例:group by rollup(dept,pro )

结果都是一样的:

Dept

Pro

Maxsalary

计算机系

教授

3000

计算机系

老师

2000

Null

null

5000

 

 

 

7.5 限制结果集行数

Mysql在查询语句最后:

limit nn等于几,显示几条;

limit offsetn   offset=0,就从第1条开始查n条;

Oraclewhere条件之后:

Rownum <n

Rownum <=n

1开始,查n

Sql serverselect之后:

Select top n [precent] 列名1,列名2

Top是关键字,n显示行数,precent返回前n%的行数,是可选的。

如果n=10,没有precent就是返回结果的前10行,有precent是返回结果的前10%行。

Top语句还可以用于insertupdatedelete语句中。

 

 

 

 

 

数据结构基础系列(9):排序

-
  • 1970年01月01日 08:00

SQL数据排序与分组

SQL
  • GoslingBoy
  • GoslingBoy
  • 2014-03-12 23:27:32
  • 4052

LINQ 的查询_联表、分组、排序

1:查询 //根据科目分组查询 //var v = from s in db.Set().ToList() // group s by ...
  • Moon_LL
  • Moon_LL
  • 2016-08-22 11:31:57
  • 746

SQL SERVER 取出 一张表中的每个分组中 的第一条数据 ,第一条数据是按照某种排序规则进行排序取的第一条

如题,方法很简单,只要一句话就可以解决: SELECT * FROM ( SELECT  *,  ROW_NUMBER() OVER (PARTITION BY LineCode ORDER BY O...
  • ainixiaozhuzi
  • ainixiaozhuzi
  • 2013-10-15 00:18:09
  • 2632

hive临时表中 取 分组排序后所有排列第一的元素集合

以下sql的作用为:从订单表中,获取每个人201606月份最偏好的出行时刻。select b.* from ( select *, row_number() over (partitio...
  • meilikafei
  • meilikafei
  • 2016-06-24 09:03:55
  • 2121

对多数据进行分组排序后取每组第一条记录

对多数据进行分组排序后取每组第一条记录 Sql代码  SELECT *    FROM (SELECT ROW_NUMBER() OVER(PARTITION BY  ORDER BY  DESC) ...
  • ligaoyang
  • ligaoyang
  • 2011-05-12 21:52:00
  • 9032

表中数据的排序与分组

在前面介绍的使用SQL语句执行查询操作时,我们可能发现查询出的数据结果的排序是无序的。为了更好的观察数据表中的查询结果,开发人员或者用户经常要对查询的数据进行排序操作,这就需要使用ORDER BY子句...
  • kss820
  • kss820
  • 2013-06-24 23:20:57
  • 493

mysql 先排序后分组再排序查询数据

SELECT * FROM (SELECT * FROM table ORDER BY test DESC) AS a GROUP BY a.test1 ORDER BY a.test DESC;
  • liuyingsv
  • liuyingsv
  • 2016-03-17 15:25:42
  • 2254

先分组再排序 取特定数据

 select * from (select row_number() over(partition by 以此字段为分组  order by 以此字段排序 desc rn ) where rn...
  • hutao1101175783
  • hutao1101175783
  • 2016-09-06 19:45:58
  • 617

rdlc 报表 分组排序

1、rdlc 报表文件的RowNumber()函数,显示的是行序号。()中可以填写nothing,也可以填写分组名称来进行行号显示。 2、自定义分组:       (1)、右击报表文件,“报表属性...
  • mutou965175859
  • mutou965175859
  • 2012-08-16 16:21:43
  • 5206
收藏助手
不良信息举报
您举报文章:7.表中数据的排序与分组
举报原因:
原因补充:

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