DataWhale组队学习:SQL-TASK02

1、select 用法(略)
2、where 用法(略)
3、关于*和DISTINCT

select * 
  from table1
 where column1 = 'certain';
select distinct column1
  from table1
 where column1 = 'certain'

4、COUNT(*)会得到包含NULL的数据行数,而COUNT(<列名>)会得到NULL之外的数据行数。

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

6、sql在使用having子句时,select语句的顺序是fromwheregroup byhavingselect~order by

练习题如下:
首先,先看下product原始的表格:(直接select * from product)


DataWhale组队学习:SQL-TASK02_第1张图片
image.png

NO1.


image.png

这个题考察的是where的用法,非常基础,解题如下:

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

看下结果


DataWhale组队学习:SQL-TASK02_第2张图片
image.png

NO.2:


DataWhale组队学习:SQL-TASK02_第3张图片
image.png

这个考察对null本身&逻辑运算本身的理解,逻辑运算比较符是对真值结果的比较,而null本身的真值结果既不为真,也不为假,是一种不确定状态,所以不可以用比较符(<,>,<>,=);对于null来讲,应该用 IS NULL 或者 IS NOT NULL,而且没有跟NULL比大小的,因为根本比不出来~
所以结果,应该是这以上三种均select不出来任何信息,除非它有一行记录都是null值。
1和2可以改写,3的逻辑就是错的。1和2改写如下:

SELECT *
  FROM product
 WHERE purchase_price IS NULL;
SELECT *
  FROM product
 WHERE purchase_price IS NOT NULL;

NO.3


DataWhale组队学习:SQL-TASK02_第4张图片
image.png

这个考察的其实是sql的嵌套语句用法,解题如下:

SELECT product_name,sale_price,purchase_price
    FROM(
        SELECT product_name,sale_price,purchase_price,sale_price-purchase_price as diff
         FROM product
     )table1
    WHERE diff >= 500;
DataWhale组队学习:SQL-TASK02_第5张图片
image.png

NO.4:


DataWhale组队学习:SQL-TASK02_第6张图片
image.png

这个就是一个简单的计算:

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

结果如下:


DataWhale组队学习:SQL-TASK02_第7张图片
image.png

NO.5:


DataWhale组队学习:SQL-TASK02_第8张图片
image.png

一行一行看,
1、逗号和括号写成了中文,wrong
2、groupby和where顺序反了
3、groupby中的关键字在select中竟然没有,而且select除了聚合函数以外出现了groupby中没有的关键字。
3、结尾分号写成了中文的,wrong

NO.6:


DataWhale组队学习:SQL-TASK02_第9张图片
image.png

题目应该是大于1.5

SELECT product_type,sale_price_sum,purchase_price_sum
     FROM(
         SELECT product_type,sum(sale_price) as sale_price_sum,sum(purchase_price) as purchase_price_sum 
            FROM product
        GROUP BY product_type
        )table1
    WHERE sale_price_sum > purchase_price_sum*1.5;
DataWhale组队学习:SQL-TASK02_第10张图片
image.png

NO.7


DataWhale组队学习:SQL-TASK02_第11张图片
image.png

这是根据两个基准列进行的排序,regist_date 倒序,在regist_date 基准下,再对purchase_price正序。

SELECT * 
    FROM product
    ORDER BY regist_date desc,purchase_price;

DataWhale组队学习:SQL-TASK02_第12张图片
image.png

但是这里有一点是对于NULL值,要注意当用于排序的列名中含有NULL时,NULL会在开头或末尾进行汇总。题目是在开头汇总,我这里的结果是在末尾汇总。

今天又是一起学习的一天,完成和坚持是第一步,所以今天又走了一步呢我想你也和我一样

你可能感兴趣的:(DataWhale组队学习:SQL-TASK02)