数据库简单查询——数据的分组和排序

查询的分组

1、group by子句可以包含任意数目的列,因而可以对分组进行嵌套,更细致的进行分组

2、除聚集计算语句外,select语句中的每一列都必须在group by 子句中给出

3、如果分组列中包含具有NULL值的行,则NULL将作为一个分组返回,如果列中有多行NULL值,它们将分为一组

4、group by子句必须出现在where子句之后,order by子句之前

例如:我想列出每个部门的最高薪水,sql语句如下:
select dept,max(salary) as max_salary from B group by dept;
注意:SQL还允许过滤分组,规定包括哪些分组,排除哪些分组。having和where 的差别
目前为止所学过的所有类 型的WHERE子句都可以用HAVING来替代。唯一的差别是,WHERE过滤行,而HAVING过滤分组。
例如:查询平均工资不足2000的部门
select dept,avg(salary) as avg_salary from B
group by dept
having avg_salary<2000;

查询的排序

1、按多个列排序:经常需要按照不知一个列进行数据排序。

例如:按每个部门的最高工资进行排序
select dept,max(salary) as max_salary from B group by dept order by max_salary;

2、按列位置排序:除了能用列名指出排序列外,order by 还支持相对列位置排序。

例:对查询并对id和salary进行排序
select id,salary from products order by 1,2;
分析:这里的输出与上面的查询相同。不同之处在于order by 子句,select清单中指定的是选择列的相对位置而不是列名。order by 2 表示按select清单中第二个列,name进行排序。order by 2,3表示先按price排序,再按name进行排序。

3、指定排序方向:如果打算对多个列进行排序。

例:select salary ,id,name from products order by salary desc,id;
desc关键字只作用于位于其前面的列名。必须对每个列指定desc关键字。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值