SQL解惑二--谜题51解法

SQL解惑二
谜题51:
构建数据SQL:

点击(此处)折叠或打开

  1. create or replace view 预算 (项目 ,种类 ,预算费用)
  2. as
  3. select 1 , 9100 , 100.00 from dual union all
  4. select 2 , 9100 , 15.00 from dual union all
  5. select 3 , 9100 , 6.00 from dual union all
  6. select 4 , 9200 , 8.00 from dual union all
  7. select 5 , 9200 , 11.00 from dual;

  8. create or replace view 支出(收据 ,项目, 支出费用)
  9. as
  10. select 1 , 1 , 10.00 from dual union all
  11. select 2 , 1 , 20.00 from dual union all
  12. select 3 , 1 , 15.00 from dual union all
  13. select 4 , 2 , 32.00 from dual union all
  14. select 5 , 4 , 8.00 from dual union all
  15. select 6 , 5 , 3.00 from dual union all
  16. select 7 , 5 , 4.00 from dual;
实现如下效果:
bb

该类问题应该先聚合,然后再进行表的关联

解答如下:

点击(此处)折叠或打开

  1. select v.种类, v.预算合计, n.支出合计
  2.   from (select y.种类, sum(y.预算费用) as 预算合计
  3.   from 预算 y
  4.  group by y.种类)v
  5.   join
  6.  (select y.种类, sum(支出费用) as 支出合计
  7.     from 预算 y
  8.     join 支出 z
  9.    using (项目)
  10.    group by y.种类) n
  11.     on (v.种类 = n.种类)


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29507357/viewspace-1223203/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29507357/viewspace-1223203/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值