WonderfulSQL-task2

WonderfulSQL-task2

(Datawhale28期组队学习)

基础点

  • 查询
    • select
    • where
  • 运算符
    • 算术运算符
    • 比较运算符
    • 逻辑运算符
  • 聚合查询
  • 分组
    • group by
    • 指定条件:having
  • 排序:order by

知识点

1 查询
1.1 select语句
  • SELECT子句中列举了从表中查询出的列的名称 (可以是常数、也可是函数、运算符、正则、表达式的结果)
  • 而FROM子句则指定了选取出数据的表的名称(可以是各种操作整理后的新表)
select xx
from yy;
1.2 where语句
  • 指定查询数据的条件,约束条件(可以是各种操作整理后的表达式
select xx
from yy
where zz;
1.3 规则
  • (*)代表全部列
  • 汉语别名需加双引号“”
  • DISTINCT可以去重
2 运算符
2.1 算术运算符

+ - * /

2.2 比较运算符

= <> >= > <= <

2.3逻辑运算符

NOT 非
AND 并(交集)
OR 或(并集)

2.4 规则
  • 选取NULL记录时,用IS NULL运算符,不可以用**“=”**
  • 选取不是NULL的记录时,用IS NOT NULL运算符,不可以用**“!=”**
  • 优先处理括号
  • 真值:真(TRUE)、假 (FALSE)、不确定(UNKNOWN)
3 聚合查询
3.1 聚合函数
  • COUNT:计算某列或(*所有)记录数(行数)
  • SUM:计算某数值列数据和
  • AVG:计算某数值列数据均值
  • MAX:求任意列中数据的最大值
  • MIN:求任意列中数据的最小值
3.2 删除重复值

DISTINCT关键字

COUNT(DISTINCT product_type)
//计算去除重复数据后的数据行数
3.3规则
  • 聚合函数不计算null的数据,但是count(*)会计算,把null的数据包含在内。
  • count(列),得到除null外的该列记录数。
  • sum/avg函数 适用于数值类型的列。
  • 想要计算值的种类时,可以在COUNT函数的参数中使用DISTINCT。(去重取巧)
  • 在聚合函数的参数中使用DISTINCT关键字。
4 分组
4.1GROUP BY语句
  • GROUP BY 子句根据指定的列划分组
  • GROUP BY 子句中指定的列称为聚合键或者分组列
SELECT xx1, xx2 ……
FROM yy
(WHERE xx)
GROUP BY xx1, xx2 ……;
4.2 规则
  • NULL作为一组特殊数据进行处理
  • 逻辑顺序不可变
    • SELECT → FROM → WHERE → GROUP BY;GROUP BY对筛选出的数据进行处理
  • SELECT子句只能写聚合键及聚合函数
  • 在SELECT,HAVING以及ORDER BY子句中使用聚合函数,不可在where中使用聚合函数(where处于结果集确定过程中)
4.3 HAVING得到特定分组
  • 在GROUP BY后使用HAVING子句,指定组
  • 限定分组时不能用where,WHERE子句只能指定记录(行)的条件
  • Having过滤条件要从聚合键、聚合函数里选
5 排序
5.1order 语句
SELECT <列名1>, <列名2>, <列名3>, ……
  FROM <表名>
 ORDER BY <排序基准列1>, <排序基准列2>, ……
  • 默认升序,降序desc
  • 可设置多个排序键
  • 排序的列名中含有NULL时,NULL会在开头或末尾进行汇总。
  • 字符串类型的数据原则上按照字典顺序进行排序,不能与数字的大小顺序混淆。
  • 列名可使用别名
    • FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY
    • 当在ORDER BY中使用别名时,已经知道了SELECT设置的别名存在,但是在GROUP BY中使用别名时还不知道别名的存在,所以不能在ORDER BY中可以使用别名,但是在GROUP BY中不能使用别名

练习

#2.1
select product name, regist_date
from product
where regist_date > '2009-04-28'

#2.2
#(1)查询purchase_price为空的product表商品所有信息
#(2)查询purchase_price非空的product表商品所有信息
#(3)查询purchase_name非空的product表商品所有信息

#2.3
SELECT product_name, sale_price, purchase_price
FROM product
WHERE sale_price >= purchase_price + 500;

#2.4
SELECT product_name, product_type, (sale_price*90%-purchase_price) as profit
FROM product
WHERE profit >= 100
AND product_type in ('办公用品','厨房用具')

#2.5
#(1)sum(product_name)错误,sum适用于数值类型的列
#(2)先写where子句,再写group by 子句
#(3) SELECT子句只能写聚合键及聚合函数,不对应

#2.6
select product_type, sum(sale_price) sale_sum, sum(purchase_price) purchase_sum
from product
GROUP BY product_type
HAVING sale_sum > purchase_sum*1.5


#2.7
order by regist_date desc, sale_price;

参考

  • https://github.com/datawhalechina/wonderful-sql
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值