Oracle中有rank函数,可以这样写:SQL> create table zz_ch_mainboard (name varchar2(8),subject varchar2(16),price number);
Table created
SQL> insert into zz_ch_mainboard values ('张三','主板',10);
1 row inserted
SQL> insert into zz_ch_mainboard values ('李四','主板',7);
1 row inserted
SQL> insert into zz_ch_mainboard values ('王五','主板',6);
1 row inserted
SQL> insert into zz_ch_mainboard values ('王五','主板',5);
1 row inserted
SQL> commit;
Commit complete
SQL> create table zz_ch_ems (name varchar2(8),subject varchar2(16),price number);
Table created
SQL> insert into zz_ch_ems values ('张三', '内存', 10);
1 row inserted
SQL> insert into zz_ch_ems values ('李四', '内存', 7);
1 row inserted
SQL> insert into zz_ch_ems values ('王五', '内存', 5);
1 row inserted
SQL> insert into zz_ch_ems values ('张三', '内存', 10);
1 row inserted
SQL> commit;
Commit complete
SQL>
SQL> select name,sum(price) tp,rank() over (order by sum(price) desc) rk from
2 (select name,price from zz_ch_mainboard union all select name,price from zz_ch_ems)
3 group by name;
NAME TP RK
-------- ---------- ----------
张三 30 1
王五 16 2
李四 14 3
温馨提示:答案为网友推荐,仅供参考