当前位置: 代码迷 >> Oracle管理 >> Oracle数据表高效查询有关问题求解
  详细解决方案

Oracle数据表高效查询有关问题求解

热度:75   发布时间:2016-04-24 04:56:58.0
Oracle数据表高效查询问题求解
有员工表empinfo
(fempno varchar2(10) not null pk,
fempname varchar2(20) not null,
fage number not null,
fsalary number not null);

假如数据量很大约1000万条,写一个你认为最高效的sql,用一个sql计算一下四种人:
fsalary>9999 and fage>35
fsalary>9999 and fage<35
fsalary<9999 and fage>35
fsalary<9999 and fage<35

------最佳解决方案--------------------

SELECT COUNT(CASE
               WHEN fsalary > 9999 and fage > 35 THEN
                1
               ELSE
                NULL
             END) A,
       COUNT(CASE
               WHEN fsalary > 9999 and fage < 35 THEN
                1
               ELSE
                NULL
             END) A,
       COUNT(CASE
               WHEN fsalary < 9999 and fage > 35 THEN
                1
               ELSE
                NULL
             END) A,
       COUNT(CASE
               WHEN fsalary < 9999 and fage < 35 THEN
                1
               ELSE
                NULL
             END) A
  FROM empinfo

------其他解决方案--------------------

SELECT CASE  
               WHEN fsalary > 9999 and fage > 35 THEN  'fsalary > 9999 and fage > 35'
               WHEN fsalary > 9999 and fage < 35 THEN  'fsalary > 9999 and fage < 35'
               WHEN fsalary < 9999 and fage > 35 THEN  'fsalary < 9999 and fage > 35'
  相关解决方案