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)
NO1.
这个题考察的是where的用法,非常基础,解题如下:
select product_name,
regist_date
from product
where regist_date > '2009-04-28';
看下结果
NO.2:
这个考察对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
这个考察的其实是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;
NO.4:
这个就是一个简单的计算:
select product_name,product_type,sale_price*0.9-purchase_price as profit
from product
where sale_price*0.9-purchase_price >= 100
结果如下:
NO.5:
一行一行看,
1、逗号和括号写成了中文,wrong
2、groupby和where顺序反了
3、groupby中的关键字在select中竟然没有,而且select除了聚合函数以外出现了groupby中没有的关键字。
3、结尾分号写成了中文的,wrong
NO.6:
题目应该是大于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;
NO.7
这是根据两个基准列进行的排序,regist_date 倒序,在regist_date 基准下,再对purchase_price正序。
SELECT *
FROM product
ORDER BY regist_date desc,purchase_price;
但是这里有一点是对于NULL值,要注意当用于排序的列名中含有NULL时,NULL会在开头或末尾进行汇总。题目是在开头汇总,我这里的结果是在末尾汇总。
今天又是一起学习的一天,完成和坚持是第一步,所以今天又走了一步呢我想你也和我一样