Datawhale开源学习SQL: 1.基础查询和排序

Datawhale开源学习SQL: 1.基础查询和排序

开源连接:https://github.com/datawhalechina/wonderful-sql

TASK02 基础查询和排序

基本语法太多地方可以查阅了,下面记录个人觉得要注意的点~

SELECT

  1. 设定汉语别名时需要使用双引号(")括起来。SELECT product_name as "商品名" FROM product;
  2. 在SELECT语句中使用DISTINCT可以删除重复行。SELECT DISTINCT product_type FROM product;

运算符

  1. <> 和~不相等
  2. IS NOT NULL / IS NULL 分别取非空和空
  3. AND 运算符优先于 OR 运算符,想要优先执行OR运算,可以使用括号 product_type = '办公用品' AND ( regist_date = '2009-09-11' OR regist_date = '2009-09-20')

练习1

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

-- 请说出对product 表执行如下3条SELECT语句时的返回结果。
SELECT *
FROM product
WHERE purchase_price = NULL;
/* 返回没有记录购入价格的产品的所有信息*/
SELECT *
FROM product
WHERE purchase_price <> NULL;
/* 返回有记录购入价格的产品的所有信息*/
SELECT *
FROM product
WHERE product_name > NULL;
/* 返回空表*/

聚合函数

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

  1. COUNT函数的结果根据参数的不同而不同。COUNT(*)会得到包含NULL的数据行数,而COUNT(<列名>)会得到NULL之外的数据行数。
  2. 聚合函数会将NULL排除在外。但COUNT(*)例外,并不会排除NULL。
  3. DISTINCT

GROUP BY

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

HAVING

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

ORDER BY

SQL在使用 HAVING 子句时 SELECT 语句的顺序为:
FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY。

  • GROUP BY 子句中不能使用SELECT 子句中定义的别名,但是在 ORDER BY 子句中却可以使用别名。

练习2

/*请编写一条SELECT语句,求出销售单价( sale_price 列)合计值大于进货单价( purchase_price 列)合计值1.5倍的商品种类。执行结果如下所示。
product_type | sum  | sum 
-------------+------+------
衣服         | 5000 | 3300
办公用品      |  600 | 320
*/
SELECT product_type, SUM(sales_price) AS sum_salse_price, SUM(purchase_price) AS sum_purchas_price
FROM product
GROUP BY product_type
HAVING SUM(sales_price)>SUM(purchase_price);

上一篇:Jvm调优实战


下一篇:SAP 电商云 Spartacus UI product 明细页面的路由配置