SQL训练营Select基础查询与排序学习笔记

本学习笔记为阿里云天池龙珠计划SQL训练营的学习内容,学习链接为https://tianchi.aliyun.com/forum/postDetail?spm=5176.20222307.J_9059755190.4.73dc4cb3O5Eh1V&postId=163422 

一、学习知识点概要
1.Select语句基础

2.算术运算符和比较运算符

3.逻辑运算符

4.聚合查询

5.分组语句

6.Having子句

7.Order By子句

二、学习内容

1.Select语句基础

        利用select和where搭配可以查找符合某些字段条件的记录

2.算术运算符和比较运算符

        算术运算符:四则运算 +-*/

        比较运算符:=  !=  > < >= <=等

3.逻辑运算符

        NOT/AND/OR

4.聚合查询

        COUNT ;

        MAX;MIN;AVG;SUM

5.分组语句

        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子句中使用聚合函数。

6.Having子句

7.Order By子句

        可以使用别名

        原因:SQL使用 HAVING 子句时 SELECT 语句的执行****顺序为:

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

三、学习问题与解答

--1.1编写一条SQL语句,从product(商品)表中选取出“登记日期
--(regist在2009年4月28日之后”的商品,查询结果要包含product_name和regist_date两列。
SELECT product_name, regist_date
FROM PRODUCT 
WHERE regist_date > TO_date('2009-04-28','YY-MM-DD');

Oracle数据库需要用to_date函数转换日期

--1.2
采用where purchase_price = NULL;<> NULL;> NULL
没有记录返回
改为IS NULL;IS NOT NULL能够正确显示结果

/*1.3 代码清单2-22(2-2节)中的SELECT语句能够从product表中
取出“销售单价(saleprice)比进货单价(purchase price)高出500日元以上”的商品。
请写出两条可以得到相同结果的SELECT语句。执行结果如下所示。*/
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 NOT SALE_PRICE - PURCHASE_PRICE <500;

--1.4
SELECT product_name, product_type, sale_price * 0.9 - purchase_price AS profit
FROM PRODUCT p 
WHERE (product_type='办公用品' OR product_type='厨房用具')
AND sale_price * 0.9 - purchase_price > 100;

--6
SELECT product_type, sum(sale_price) AS sum, sum(purchase_price) AS SUM 
FROM PRODUCT 
GROUP BY PRODUCT_TYPE 
HAVING sum(sale_price) > sum(PURCHASE_PRICE) * 1.5

--7 
SELECT * FROM PRODUCT p 
ORDER BY REGIST_DATE DESC ,SALE_PRICE 

四、学习思考与总结

        学习了SQL的执行过程,了解了为什么groupby子句不能使用别名而orderby子句可以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值