阿里云——天池SQL训练营Task02

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

一、SELECT语句基础

1.1 从表中选取数据

SELECT语句(查询/从表中选出数据):

SELECT <列名>,

FROM <表名>;

1.2从表中选取符合条件的数据

WHERE语句(选出满足条件的语句):

SELECT <列名>, ……

FROM <表名>

WHERE <条件表达式>;

1.3 相关法则

(1)星号(*)代表全部列的意思。

(2)SQL中可以随意使用换行符,不影响语句执行(但不可插入空行)。

(3)设定汉语别名时需要使用双引号(")括起来。

(4)在SELECT语句中使用DISTINCT可以删除重复行。

(5)注释是SQL语句中用来标识说明或者注意事项的部分。分为1行注释"-- "和多行注释两种"/* */"。

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

2.1 算术运算符

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

2.2 比较运算符

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

2.3 常用法则

(1)SELECT子句中可以使用常数或者表达式。

(2)使用比较运算符时一定要注意不等号和等号的位置。

(3)符串类型的数据原则上按照字典顺序进行排序,不能与数字的大小顺序混淆。

(4)希望选取NULL记录时,需要在条件表达式中使用IS NULL运算符。希望选取不是NULL的记录时,需要在条件表达式中使用IS NOT NULL运算符。

三、逻辑运算符

3.1 NOT运算符

想要表示“不是……”时,除了前文的<>运算符外,还存在另外一个表示否定、使用范围更广的运算符:NOT(不能单独使用)。

3.2 AND运算符和OR运算符

当希望同时使用多个查询条件时,可以使用AND或者OR运算符。(AND 相当于“并且”,OR 相当于“或者”)。

3.3 通过括号优先处理

3.4 真值表

当碰到条件较复杂的语句时,可以采用真值表来帮忙梳理逻辑。

3.5 含有NULL时的真值

这时真值是除真假之外的第三种值——不确定(UNKNOWN)。NULL的真值结果既不为真,也不为假,因为并不知道这样一个值。一般的逻辑运算并不存在这第三种值。

四、对表进行聚合查询

4.1 聚合函数

SQL中用于汇总的函数叫做聚合函数。以下五个是最常用的聚合函数:

(1)COUNT:计算表中的记录数(行数);

(2)SUM:计算表中数值列中数据的合计值;

(3)AVG:计算表中数值列中数据的平均值;

(4)MAX:求出表中任意列中数据的最大值;

(5)MIN:求出表中任意列中数据的最小值;

4.2 常用法则

(1)COUNT函数的结果根据参数的不同而不同。COUNT(*)会得到包含NULL的数据行数,而COUNT(<列名>)会得到NULL之外的数据行数。

(2)聚合函数会将NULL排除在外。但COUNT(*)例外,并不会排除NULL。

(3)MAX/MIN函数几乎适用于所有数据类型的列。SUM/AVG函数只适用于数值类型的列。

(4)想要计算值的种类时,可以在COUNT函数的参数中使用DISTINCT。

(5)在聚合函数的参数中使用DISTINCT,可以删除重复数据。

五、对表进行分组

5.1 GROUP BY语句

进行分组汇总(即:将现有的数据按照某列来汇总统计):

SELECT <列名1>,<列名2>, <列名3>, ……

FROM <表名>

GROUP BY <列名1>, <列名2>, <列名3>, ……;

5.2 聚合键中包含NULL时

将NULL作为一组特殊数据进行处理

5.3 GROUP BY书写位置

GROUP BY的子句书写顺序有严格要求,不按要求会导致SQL无法正常执行,目前出现过的子句书写****顺序为:

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

5.4 在WHERE子句中使用GROUP BY
5.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.1 用HAVING得到特定分组

将表使用GROUP BY分组后,可以在GROUP BY后使用HAVING子句来取出其中两组。(HAVING的用法类似WHERE)

6.2 HAVING特点

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

七、对查询结果进行排序

7.1 ORDER BY

SQL中的执行结果是随机排列的,当需要按照特定顺序排序时,可已使用ORDER BY子句。默认为升序排列,降序排列为DESC。

7.2 ORDER BY中列名可使用别名

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

练习

练习题1

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

代码编写:select  product_name , regist_date

                  from product

                  where regist_date > '2009-04-28';

练习题2

请说出对product 表执行如下3条SELECT语句时的返回结果。

代码编写:1.select *
                     from product
                     where purchase_price = NULL;

                   2.select *

                      from product

                      where purchase_price <> NULL;

                    3.select *
                       from product
                       where product_name > NULL;

练习题3

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

product_name | sale_price | purchase_price 
-------------+------------+------------
T恤衫         |   1000    | 500
运动T恤       |    4000    | 2800
高压锅        |    6800    | 5000

代码编写: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 sale_price-                            500>=purchase_price;
                  select product_name,sale_price,purchase_price from product where                                              sale_price>=500+purchase_price;

练习题4

请写出一条SELECT语句,从product表中选取出满足“销售单价打九折之后利润高于100日元的办公用品和厨房用具”条件的记录。查询结果要包括product_name列、product_type列以及销售单价打九折之后的利润(别名设定为profit)。

提示:销售单价打九折,可以通过saleprice列的值乘以0.9获得,利润可以通过该值减去purchase_price列的值获得。

代码编写:select product_name,product_type,sale_price*0.9-purchase_price

                  as profit

                  from  product

                 where sale_price*0.9-purchase_price >=100;

练习题5

请指出下述SELECT语句中所有的语法错误。

SELECT product_id, SUM(product_name)
--本SELECT语句中存在错误。
  FROM product 
 GROUP BY product_type 
 WHERE regist_date > '2009-09-01';

答:1.select语句中出现聚合键以外的列名;

        2.where语句应位于group by前;

        3.product_name不能用sum聚合.

练习题6

请编写一条SELECT语句,求出销售单价(sale_price列)合计值大于进货单价(purchase_price列)合计值1.5倍的商品种类。执行结果如下所示。

product_type | sum  | sum 
-------------+------+------
衣服         | 5000 | 3300
办公用品      |  600 | 320

代码编写:select product_type, SUM(sale_price), SUM(purchase_price)
                  from product
                  group BY product_type
                  having SUM(sale_price) > SUM(purchase_price) * 1.5;

练习题7

此前我们曾经使用SELECT语句选取出了product(商品)表中的全部记录。当时我们使用了ORDERBY子句来指定排列顺序,但现在已经无法记起当时如何指定的了。请根据下列执行结果,思考ORDERBY子句的内容。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 阿里云天池大赛是一个非常有名的数据科学竞赛平台,其中机器学习竞赛是其中的一个重要组成部分。在这个竞赛中,参赛者需要使用机器学习算法来解决各种各样的问题,例如图像识别、自然语言处理、推荐系统等等。 机器学习竞赛的解题过程通常包括以下几个步骤: 1. 数据预处理:参赛者需要对提供的数据进行清洗、特征提取、数据转换等操作,以便于后续的建模和训练。 2. 模型选择:参赛者需要选择适合当前问题的机器学习算法,并对其进行调参和优化。 3. 模型训练:参赛者需要使用训练数据对模型进行训练,并对训练过程进行监控和调整。 4. 模型评估:参赛者需要使用测试数据对模型进行评估,以确定其在实际应用中的性能表现。 5. 结果提交:参赛者需要将最终的模型结果提交到竞赛平台上进行评估和排名。 在机器学习竞赛中,成功的关键在于对问题的深入理解和对机器学习算法的熟练掌握。同时,参赛者还需要具备良好的团队合作能力和沟通能力,以便于在竞赛中取得更好的成绩。 ### 回答2: 阿里云天池大赛是一个非常受欢迎的机器学习竞赛平台,它汇集了大量来自世界各地的数据科学家,分享了一系列有趣的竞赛和可用的数据集,供参赛选手使用。机器学习篇中,我们将解析一些常见的阿里云天池大赛题目,让大家对机器学习竞赛有更深入的了解。 一、赛题选取 阿里云天池大赛的赛题通常与商业、医疗等复杂领域相关,选择数据集时要了解行业背景和数据质量,以准确地判断模型的准确性和适用性。此外,在选择赛题时,还要考虑与参赛选手一起合作的可能性,以及他们可能使用的算法和技术。因此,为了成功解决赛题,参赛者应当仔细研究题目的背景、数据、分析目标等内容,有助于更好地理解问题及其解决方案。 二、数据清洗 参赛者在使用数据时,需要对其进行实质性的预处理和清洗工作,以减少不准确的数据对结果的影响。预处理和清洗包括基本的数据处理,例如缺失值、异常值和重复值的处理,还需要利用可视化和探索性数据分析等技术来检查数据的分布情况、相互关系和异常值等问题。 三、特征选择 在构建模型之前,参赛选手必须确定哪些特征会对问题的解决产生实际影响。这个过程称为特征选择,它旨在通过保留最相关的特征来减少模型复杂性,提高准确性,并且还有助于减少数据集的维数。特征选择包括基于统计学和机器学习的算法,同时应该考虑特征的相关性和重要性。 四、建模和评估 参赛者在解决问题时,需要考虑使用何种算法,以及如何构建对应的模型。此外,还需在不同的算法和模型之间进行比较,并选择最优模型。最后,应该针对模型进行评估,以确保各种重要性能指标(例如准确性,召回率,精确度等)都得到最佳表现。 总的来说,机器学习是一种复杂而令人兴奋的技术,参赛者要考虑数据质量、数据清洗、特征选择、建模和评估等诸多因素。通过参加阿里云天池大赛,大家可以不断学习和练习,不仅提升自己的技能,同时还有机会获得丰厚的奖励。 ### 回答3: 阿里云天池大赛是一个集数据竞赛、人才选拔、行业交流、技术分享、产学研合作等多种功能于一体的大型平台。其中,机器学习篇的赛题挑战包括了各种典型机器学习场景,旨在挖掘数据中价值,提高数据应用和解决实际问题的能力。 在机器学习篇的赛题中,常见的任务包括分类、回归、聚类、推荐等,其中分类问题是最常见的任务之一。分类可以分为二分类、多分类、超大规模分类等多个子类型。对于分类问题,大家需要学习分类算法,如KNN、NB、SVM、LR、GBDT、XGBoost等,并熟悉如何调参等技巧。 回归问题主要是根据给定的样本数据,预测一个连续的数值。回归问题旨在找到独立变量(X)和连续依赖变量(Y)之间的关系,以便使用该模型来预测连续依赖变量的值。对于回归问题,大家需要掌握线性回归、岭回归、Lasso回归、ElasticNet回归等算法。 聚类问题是将相似的数据划分到同一类别中,相似度较高,不同类别之间相似度较低。对于聚类问题,大家需要学习如何使用K-means、DBSCAN、Hierarchical聚类算法。 推荐问题是根据用户的行为习惯,预测用户的需求,以便将相应的内容推荐给用户。推荐问题的数据通常包括用户的行为、物品的属性和用户的评分。推荐问题常用的算法包括CF、ALS、LFM等。除此之外,还有深度学习在图像识别、语音识别、自然语言处理、推荐、游戏AI等方面具有广泛的应用,如CNN、RNN、LSTM、GAN等。 总之,机器学习篇的赛题挑战涉及到各种典型机器学习算法和应用场景,需要大家掌握基础理论和实践技巧,并多参加实战项目和比赛练习,不断提升自己的能力和水平。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值