欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

sql (case)

程序员文章站 2022-06-05 12:12:16
...

題目﹕

reate table tst (c1 integer, c2 integer, c3 integer);
insert into tst values (1, null, 150);
insert into tst values (1, 1, 80);
insert into tst values (1, 2, 90);
insert into tst values (1, 1, 130);
insert into tst valuse (1, 3, 120);

SQL> select * from tst;

C1 C2 C3
---------- ---------- ----------
1 150
1 1 80
1 2 90
1 1 130
1 3 120

要求结果为

C1 C2 C3_SUM
---------- ---------- ----------
1 192
1 1 210
1 2 90
1 3 120

以C1/C2分组对C3求和,如果C2为空,C3的和应该包括同组中其他C2非空行的10%.

如果单纯分组
则为
C1 C2 C3_SUM
1 NULL 150

特殊要求为让其包含 10% * (80+90+130+120) = 42
最后结果为 150 + 42 = 192


答案﹕

[@[email protected]]

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

转载于:http://blog.itpub.net/701414/viewspace-905266/