SQL计算的困难分析

      发明SQL的主要目的是为结构化数据提供一种屏弊数据物理存储方案的访问方法,因而在SQL中大量使用了和类英语的词汇和语法以降低其理解和书写困难。而且,作为SQL基础理论的关系代数是个完备的计算体系,原则上可以计算一切。这样看来,我们理所应当地用SQL完成各种数据计算需求。
     但是,尽管关系数据库取得了巨大的成功,SQL却显然没有达到其发明初衷,除了极少数简单的查询可由终端用户采用SQL完成外,绝大多数的SQL使用者仍是技术人员,甚至许多复杂的查询对技术人员也不是件容易的事。
     这是为什么呢?我们通过一个很简单的例子来考察SQL在计算方面的缺点。     设有一个由三个字段构成的销售业绩表(为了简化问题,省去日期信息):
sales_amount 销售业绩表
sales 销售员姓名,假定无重名
product 销售的产品
amount 该销售员在该产品上的销售额
     现在我们想知道出空调和电视销售额都在在前10名的销售员名单。     这个问题相当简单,人们会很自然地设计出如下计算过程:
    1.  按空调销售额排序,找出前10名;
    2.  按电视销售额排序,找出前10名;
    3.  对1、2的结果取交集,得到答案;
     我们现在来用SQL做。
    1. 找出空调销售额前10名。这很简单:
      select top 10 sales from sales_amount where product='AC' order by amount desc
    2. 找出电视销售额前10名。动作一样:
      select top 10 sales from sales_amount where product='TV' order by amount desc
    3. 求1、2的交集。这有点麻烦,SQL不支持步骤化,上两步的计算结果无法保存,只能再重抄一遍了:
      select * from ( select top 10 sales from sales_amount where product='AC' order
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值