TASK-02 SQL基础查询与排序

笔记开头格式如下:本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql

一、SELECT语句基础

select<列名>from<表名> where<条件>

二、算术运算符和比较运算符

1.SQL语句中可以使用的四则运算的主要运算符如下:

含义运算符
加法+
减法-
乘法*
除法/

2.SQL常见比较运算符如下:

运算符含义
=和~相等
<>or !=和~不相等
>=大于等于~
>大于~
<=小于等于~
<小于~

三、逻辑运算符

1.基本概念

NOT 表示不是,不存在,例如not in,is not null;

AND 相当于“并且”,类似数学中的取交集;

OR 相当于“或者”,类似数学中的取并集;

2.真假值判断

AND 运算符**:**两侧的真值都为真时返回真,除此之外都返回假。

OR 运算符**:**两侧的真值只要有一个不为假就返回真,只有当其两侧的真值都为假时才返回假。

NOT运算符**:**只是单纯的将真转换为假,将假转换为真。

练习题第一部分代码

1.select  product_name,regist_date
from  product
where  regist_date>'2009-04-28';

2.1 选择<product>表中<purchase_price>列 条件为空的所有列

2.2 选择<product>表中<purchase_price>列 条件不为空的所有列

2.3选择<product>表中<purchase_price>列 条件大于空的所有列

3.select product_name ,sale_price,purchase_price
from  product
where   sale_price-purchase_price>=500;

select product_name ,sale_price,purchase_price
from  product
where   purchase_price-sale_price<=-500;

4.select product_name,product_type,   (sale_price*0.9)-purchase_price  as  profit
from  product
where (sale_price*0.9)-purchase_price>=100

ORDER BY 3 desc ;

四、对表进行聚合查询

1.

  • COUNT:计算表中的记录数(行数)
  • SUM:计算表中数值列中数据的合计值
  • AVG:计算表中数值列中数据的平均值
  • MAX:求出表中任意列中数据的最大值
  • MIN:求出表中任意列中数据的最小值

2.

  • COUNT函数的结果根据参数的不同而不同。COUNT(*)会得到包含NULL的数据行数,而COUNT(<列名>)会得到NULL之外的数据行数。
  • 聚合函数会将NULL排除在外。但COUNT(*)例外,并不会排除NULL。
  • MAX/MIN函数几乎适用于所有数据类型的列。SUM/AVG函数只适用于数值类型的列。
  • 想要计算值的种类时,可以在COUNT函数的参数中使用DISTINCT
  • 在聚合函数的参数中使用DISTINCT,可以删除重复数据

五、对表进行分组

1.GROUP BY对表进行分类汇总,注意再用聚合函数时候一定要配合GROUP BY使用;在 GROUP BY 子句中指定的列称为聚合键或者分组列。group by可以将NULL指作为一类分类

汇总

2.GROUP BY写法顺序

1.SELECT → 2. FROM → 3. WHERE → 4. GROUP BY

3.常见错误

在使用聚合函数及GROUP BY子句时,经常出现的错误有:

  1. 在聚合函数的SELECT子句中写了聚合健以外的列 使用COUNT等聚合函数时,SELECT子句中如果出现列名,只能是GROUP BY子句中指定的列名(也就是聚合键)。
  2. 在GROUP BY子句中使用列的别名 SELECT子句中可以通过AS来指定别名,但在GROUP BY中不能使用别名。因为在DBMS中 ,SELECT子句在GROUP BY子句后执行。
  3. 在WHERE中使用聚合函数 原因是聚合函数的使用前提是结果集已经确定,而WHERE还处于确定结果集的过程中,所以相互矛盾会引发错误。 如果想指定条件,可以在SELECT,HAVING(下面马上会讲)以及ORDER BY子句中使用聚合函数。

六、为聚合结果指定条件

HAVING子句用于对分组进行过滤,可以使用数字、聚合函数和GROUP BY中指定的列名(聚合键)。

七、对查询结果进行排序

1.默认为升序排列,降序排列为ORDER BY <列名>DESC 

        #排序可以是已经有的列名,也可以是新增条件排序#

2.ORDER BY中列名可使用别名

FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY

其中SELECT的执行顺序在 GROUP BY 子句之后,ORDER BY 子句之前。也就是说,当在ORDER BY中使用别名时,已经知道了SELECT设置的别名存在,但是在GROUP BY中使用别名时还不知道别名的存在,所以ORDER BY中可以使用别名,但是在GROUP BY中不能使用别名。

练习题-第二部分

1.第一个错误 GROUP BY应该为product_id,第二个错误 where 要在group by前面

2.select product_type,sum(sale_price)AS 单价合计,sum(purchase_price) as 进货价合计
from  product
GROUP BY  product_type
having  sum(sale_price)> sum(purchase_price)*1.5

3.select *
from product
ORDER BY regist_date Desc,sale_price;

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值