SQL有很多自带的内聚的函数(MAX、MIN、AVG、SUM、COUNT)
一、聚合函数(Aggregate Functions)

这里的括号可以写列名也可以写表达式,下面是一个练习:
二、GROUP BY子句
统计2019-07-01以后每个客户的总销售额

注意这个顺序:SELECT 、FROM、 WHERE 、GROUP BY、ORDER BY

练习:以日期为组,查看对应付款方式的总额
三、HAVING子句
筛选,后面接条件,类似where,但是where在group by之前用,having在group by之后用

练习:使用sql_store编写一个查询,得到坐标Virginia的顾客,且消费超过100美元 
四、ROLLUP运算符(用于汇总聚合值的列)
对单列进行ROLLUP可以看到最后面会出现一行汇总的数值

对多列进行ROLLUP可以看到会对每组进行汇总计算,且最后面会出现一行汇总的数值

练习:使用payments和payment_methods表,计算每种支付方式的价格总和,在计算他们的总和

五、子查询
在products中查找所有比生菜(id=3)还贵的产品,products在下表中:
链接: https://pan.baidu.com/s/1Z60nxnxbSTGU_I3QQQXlKQ?pwd=aay2 提取码: aay2

这里会先执行内查询,然后在执行外查询
插播:在插入数据时如果遇到重复键则更新现有数据。
INSERT INTO employees (id, name, salary)
VALUES (1, 'Jane Doe', 6000)
ON DUPLICATE KEY UPDATE
salary = 6000;
练习:查询所有收入在平均线以上的雇员
使用数据库:链接: https://pan.baidu.com/s/15SV538vy1lBXe09w8jllbA?pwd=ev59 提取码: ev59

六、IN运算符(注意in会返回列表,如果数值很大的时候会导致运行速率大大降低)
被订购产品的唯一列表

查找从未被订购过的产品

练习:在invoicing数据库,写一段查询来找到没有发票的客户

七、ALL运算符
查找所有金额大于167美元的发票
或者

八、ANY关键词
选择至少又两条发票的用户

九、相关子查询(子查询和外查询存在相关性)
练习:选择工资超过部门平均工资的员工

练习:获得比客户平均发票总额的发票数据

十、EXISTS运算符

练习:查找没有被订购的订单


346

被折叠的 条评论
为什么被折叠?



