SQL进行排序、分组、统计的10个新技巧

作者:lll 时间:2009-01-23 13:59:00 

以一种有意义的方式组织数据可能是一项挑战。有时你需要的可能是一个简单的排序,但是通常你需要做更多,你需要分组来进行分析和统计。幸运的是,SQL提供了大量语句和操作来进行排序,分组和摘要。下面的一些技巧将会帮助你识别什么时候排序,什么时候分组,什么时候以及如何统计。对要每条语句和操作的详细信息请查看Books Online。

1.使用排序使数据有序

通常,你的所有数据真正需要的仅仅是按某种顺序排列。SQL的ORDER BY语句可以以字母或数字顺序组织数据。因此,相似的值按组排序在一起。然而,这个分组时排序的结果,并不是真的分组。ORDER BY显示每条记录而分组可能代表很多记录。

2.进行分组除去重复值

排序和分组之间的最大区别是:排序的数据显示所有记录(在限定标准范围之内),而分组数据不是显示所有记录。GROUP BY语句对于同样的值只显示一条记录。例如,下面的语句中的GROUP BY语句对数据源中重复出现的数据只返回唯一的zip编码列。

SELECT ZIP FROM Customers GROUP BY ZIP

只包括由GROUP BY和SELECT语句共同定义的那些记录,换句话说,SELECT列表必须满足GROUP BY列表,但是有一个例外就是SELECT列表可以包含聚合函数(GROUP BY语句不允许使用聚合函数)。需要注意的是GROUP BY语句不会对结果分组进行排序。为了使分组按字母或数字有序排列,需要添加ORDER BY语句。此外,在GROUP BY语句中不能引用使用了别名的字段。分组栏目必须是潜在的数据,但它们并不需要显示在结果中。

3.在分组之前进行数据筛选

你可以添加一个WHERE语句来筛选有GROUP BY所得分组中的数据。例如,下面的语句只返回肯塔基州顾客的唯一ZIP编码列。

SELECT ZIP FROM CustomersWHEREState = 'KY' GROUP BY ZIP
 
必须注意的是WHERE语句是在GROUP BY语句求值之前进行数据过滤的。与GROUP BY语句一样,WHERE语句也不支持聚合函数。

4.返回所有分组

当你使用WHERE语句过滤数据时,结果分组中只显示你指定的那些记录,而符合分组定义但是不满足过滤条件的数据不会包含在某个分组中。当你想在分组中包含所有数据时添加关键字ALL即可,这时WHERE条件就不起作用。例如,在前面的例子中添加关键字ALL就会返回所有的ZIP分组,而不是仅在肯塔基州的那些。

SELECT ZIP FROM CustomersWHEREState = 'KY' GROUP BY ALL ZIP

标签:
0
投稿

猜你喜欢

  • Python进阶-函数默认参数(详解)

    2023-11-16 17:14:44
  • JavaScript实现计算器的四则运算功能

    2024-04-16 10:36:16
  • Python下使用Scrapy爬取网页内容的实例

    2022-05-29 13:43:24
  • pytorch 把图片数据转化成tensor的操作

    2022-01-14 19:02:46
  • python制作websocket服务器实例分享

    2023-02-20 00:00:29
  • 有用的SQL语句(删除重复记录,收缩日志)

    2008-03-04 16:59:00
  • 使用jupyter Nodebook查看函数或方法的参数以及使用情况

    2022-05-13 08:23:16
  • Python getattr()函数使用方法代码实例

    2022-03-04 03:30:51
  • 探讨SQL利用INFORMATION_SCHEMA系统视图如何获取表的主外键信息

    2024-01-23 04:16:36
  • Python下载网络文本数据到本地内存的四种实现方法示例

    2022-10-09 15:48:25
  • pandas把dataframe转成Series,改变列中值的类型方法

    2023-07-04 11:41:58
  • python如何定义带参数的装饰器

    2022-01-07 04:18:30
  • 分享Python获取本机IP地址的几种方法

    2022-02-17 12:47:18
  • MYSQL中binlog优化的一些思考汇总

    2024-01-23 01:58:25
  • 详解Pycharm出现out of memory的终极解决方法

    2021-12-08 18:14:23
  • javascript与jsp发送请求到servlet的几种方式实例

    2023-06-15 15:59:30
  • JavaScript属性操作

    2024-04-16 09:52:52
  • IE6与IE7的unshift 方法

    2010-01-19 13:59:00
  • MySQL数据库的约束使用实例

    2024-01-17 04:36:57
  • python爬虫开发之使用Python爬虫库requests多线程抓取猫眼电影TOP100实例

    2021-02-25 11:13:42
  • asp之家 网络编程 m.aspxhome.com