SQL点滴10—使用with语句来写一个稍微复杂sql语句,附加和子查询的性能对比
来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 22:00 点击:次
今天偶尔看到sql中也有with关键字,好歹也写了几年的sql语句,居然第一次接触,无知啊。看了一位博主的文章,自己添加了一些内容,做了简单的总结,这个语句还是第一次见到,学习了。我从简单到复杂地写,希望高手们不要见笑。下面的sql语句设计到三个表,表的内容我用txt文件复制进去,这里不妨使用上一个随笔介绍的建立端到端的package的方法将这些表导入到数据库中,具体的就不说了。
从这里下载文件employees.txt,customers.txt,orders.txt
参考文章:http://www.2cto.com/database/201105/91595.html
使用package导入数据:http://www.2cto.com/database/201105/91597.html
简单的聚合
从orders表中选择各个年份共有共有多少客户订购了商品
- 第一种写法,我们可以写成这样
要注意的是如果把group by YEAR(o.orderdata)换成group by orderyear就会出错,这里涉及到sql语句的执行顺序问题,有时间再了解一下1select YEAR(o.orderdate) orderyear,COUNT(distinct(custid)) numCusts
2from Sales.Orders o
3group by YEAR(o.orderdate)
4go - 第二种写法,
在from语句中先得到orderyear,然后再select语句中就不会出现没有这个字段的错误了1select orderyear,COUNT(distinct(custid))numCusts
2from (select YEAR(orderdate) as orderyear,custid from sales.orders) as D
3group by orderyear
4go - 第三种写法,
1select orderyear,COUNT(distinct(custid)) numCusts
2from (select YEAR(orderdate),custid from sales.orders) as D(orderyear,custid)
3group相关新闻>>
最新推荐更多>>>- 发表评论
-
- 最新评论 更多>>