经典SQL面试题

一个SQL 面试题

 
题为:
有两个表, t1, t2,
Table t1:

SELLER            | NON_SELLER
----- -----

A                     B
A                     C
A                     D
B                     A
B                     C
B                     D
C                     A
C                     B
C                     D
D                     A
D                     B
D                     C


Table t2:

SELLER  |   COUPON      |         BAL
----- --------- ---------
A             9                       100
B             9                       200
C             9                       300
D             9                       400
A             9.5                     100
B             9.5                     20
A            10                       80

 

要求用SELECT 语句列出如下结果:------如A的SUM(BAL)为B,C,D的和,B的SUM(BAL)为A,C,D的和.......
且用的方法不要增加数据库负担,如用临时表等.

NON-SELLER|        COUPON        |        SUM(BAL)                -------                --------
A                9                900
B                9                800
C                9                700
D                9                600       
A                9.5                20
B                9.5                100
C                9.5                120
D                9.5                120
A                10                0
B                10                80
C                10                80
D                10                80


 select non_seller, coupon, sum(bal)
  2  from
  3  (
  4  select non_seller, coupon, 0 bal from
  5   (select distinct non_seller from t1, t2 where t1.seller = t2.seller),
  6   (select distinct coupon from t2)
  7  union
  8   select non_seller, coupon, bal from t2, t1
  9   where t2.seller = t1.seller
10  )
11  group by non_seller, coupon
12* order by coupon, non_seller

NON_SELLER       COUPON   SUM(BAL)
------------ ---------- ----------
A                     9        900
B                     9        800
C                     9        700
D                     9        600
A                   9.5         20
B                   9.5        100
C                   9.5        120
D                   9.5        120
A                    10          0
B                    10         80
C                    10         80
D                    10         80

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值