在做统计查询,需要一个小计百分数放在最后一行,但不是最大最小的。处理过程如下记录:
SELECT '工单' AS BILTYPENAME,
CASE WHEN BUREAU_ID IS NULL THEN '小计'
ELSE BUREAU_ID
END AS BUREAU_ID,
CASE WHEN BILLSERVER_ENNAME IS NULL AND BUREAU_ID IS NOT NULL
THEN '小计'
ELSE BILLSERVER_ENNAME
END AS BILLSERVER_ENNAME,
SUM(TOTAL) AS TOTAL,
SUM(SUCC_NUM) AS SUCCNUM,
SUM(FAIL_NUM) AS FAILNUM,
DECODE(SUM(SUCC_NUM) / SUM(TOTAL),NULL,'0',1,'100',
TO_CHAR(ROUND(SUM(SUCC_NUM) / SUM(TOTAL), 4) * 100
,'fm90.00')) || '%'
AS SUCCESSRATE,
DECODE(BILLSERVER_ENNAME, NULL, -1, 1)
*ROUND(SUM(SUCC_NUM) / SUM(TOTAL), 4) AS PAIXU
FROM APP_ORIGINBILL_STAT_DAY ORIGINBILLOBJ
WHERE 1 = 1
GROUP BY ROLLUP(BUREAU_ID, BILLSERVER_ENNAME)
ORDER BY BUREAU_ID NULLS LAST, PAIXU DESC
这里百分数用 DECODE(SUM(SUCC_NUM) / SUM(TOTAL),NULL,'0',1,'100',
TO_CHAR(ROUND(SUM(SUCC_NUM) / SUM(TOTAL), 4) * 100 ,'fm90.00')) || '%' 来表示,这样最后排序时,有可能小计位于中间位置,通过 PAIXU 字段 DECODE(BILLSERVER_ENNAME, NULL, -1, 1)
*ROUND(SUM(SUCC_NUM) / SUM(TOTAL), 4) 重新进行降序排序,可以真正实现如图的排序。
应该有更好的方法,希望能提供!
- 大小: 110.2 KB
分享到:
相关推荐
8.5.4 例2:从下一行中返回一个值 204 8.6 First_value和Last_value 205 8.6.1 例子:使用First_value来计算最大值 206 8.6.2 例子:使用Last_value来计算最小值 207 8.7 其他分析函数 207 8.7.1 Nth_value(11...
可以使用DEFINE命令设置系统变量EDITOR来改变文本编辑器的类型,在login.sql文件中定义如下一行 DEFINE_EDITOR=vi f、运行命令文件 SQL>START test SQL>@test 常用SQL*Plus语句 a、表的创建、修改、删除 创建表的...
游标的作用是将数据库的中数据检索出来后缓存,可以被PL/SQL程序一行一行的读取并处理。支持一条、多条、零条记录的处理。 游标的基本操作步骤为: (1)声明游标,使用查询来定义游标的列和行 (2)打开游标,使用PL/...
SQL语句可以在一行上写出,建议多行写出,便于阅读和调试。 多条SQL语句必须以分号分隔。多数DBMS不需要在单条SQL语句后加分号,但特定的DBMS可能必须在单条SQL语句后加分号。 SQL语句的最后一句要以 “;”号...
可以使用DEFINE命令设置系统变量EDITOR来改变文本编辑器的类型,在login.sql文件中定义如下一行 DEFINE_EDITOR=vi f、运行命令文件 SQL>START test SQL>@test 常用SQL*Plus语句 a、表的创建、修改、删除 创建表的...
两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。 B: EXCEPT 运算符 EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时...
两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。 B: EXCEPT 运算符 EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时...
两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。 B: EXCEPT 运算符 EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时...
-- 首先,以超级管理员的身份登录oracle sqlplus sys/bjsxt as sysdba --然后,解除对scott用户的锁 alter user scott account unlock; --那么这个用户名就能使用了。 --(默认全局数据库名orcl) 1、...
注意:alter modify不支持一次修改多个列,但是Oracle支持多列修改 但是MySQL可以通过多个modify的方式完成: alter table user modify tel varchar(15) default '02087654321' first, modify name varchar(20) ...