一个面试题:表A(userid,yuefen,费用类型,金额)
问题如下:求每个用户四个季度的资费总额
问题分析:因为每个用户每个月的费用类型不同,因此需要算出每个月每个用户的总额
在此基础上,计算每个用户每个季度的总额
解决办法:
方法一:case when
select userid,sum(case when yuefen>=1 and yuefen <=3 then 金额 end) 第一季度,
sum(case when yuefen>=4 and yuefen <=6 then 金额 end) 第二季度,
sum(case when yuefen>=7 and yuefen <=9 then 金额 end) 第三季度,
sum(case when yuefen>=10 and yuefen <=12 then 金额 end) 第四季度
from (select userid,月份,sum(金额) 金额 from A group by userid,月份)group by userid;
方法二:decode
select userid,sum(decode(yuefen,1,金额,2,金额,3,金额)) 第一季度,
sum(decode(yuefen,4,金额,5,金额,6,金额)) 第二季度,
sum(decode(yuefen,7,金额,8,金额,9,金额)) 第三季度,
sum(decode(yuefen,10,金额,11,金额,12,金额)) 第四季度
from (select userid,月份,sum(金额) 金额 from A group by userid,月份)group by userid;
分享到:
相关推荐
Oracle统计一天内每小时的数据量。在某小时内有数据,该时间段会被统计出来;该时间段内没有交易,该时间段不会被统计出来,默认为0即可
ORACLE EBS查看库存现有量SQL
oracle 求取2个时间间隔的年月日
Oracle 查询两个日期之间的所有月份
每个 Oracle数据库对应唯一的一个实例名SID,Oracle数据库服务器启动后,一般至少有以下几个用户:Internal,它不是一个真实的用户名,而是具有SYSDBA优先级的Sys用户的别名,它由DBA用户使用来完成数据库的管理任务...
oracle查询一个月之内数据,例如查询某个月用户使用短信多少跳
Oracle学习每三天Oracle学习每三天Oracle学习每三天Oracle学习每三天Oracle学习每三天Oracle学习每三天Oracle学习每三天Oracle学习每三天Oracle学习每三天
使用DBMover可以灵活定义Mysql和Oracle之间表和字段的对照关系,也可以在DBMover创建一个查询,把查询结果当作源表转入到Oracle中。 Dbmover for Mysql to Oracle 可以定时,定周期自动运行。 支持 Oracle 8i 以后...
每个 Oracle数据库对应唯一的一个实例名SID,Oracle数据库服务器启动后,一般至少有以下几个用户:Internal,它不是一个真实的用户名,而是具有SYSDBA优先级的Sys用户的别名,它由DBA用户使用来完成数据库的管理任务...
oracle的按月统计sql..............................
Oracle宝典Oracle宝典Oracle宝典Oracle宝典Oracle宝典Oracle宝典Oracle宝典Oracle宝典Oracle宝典Oracle宝典Oracle宝典Oracle宝典Oracle宝典Oracle宝典Oracle宝典Oracle宝典Oracle宝典Oracle宝典Oracle宝典Oracle宝典...
Oracle 9i Client (Oracle 9i 客户端) 简化版 (不安装Oracle客户端,也可以使用PLSQL Developer 不用安装Oracle客户端也可以使用PLSQL Developer 绿色! 安全! 轻便! 可靠! 1、本软件可作为简单的Oracle9i客户端...
oracle根据生日自动求年龄的函数源代码,无须创建任何其他表
在 Oracle 11gR2 之前,client 链接数据库的时候要用 vip,假如 cluster 有 4 个节点,那么客户端的 tnsnames.ora 中就对应有四个主机 vip 的一个连接串,如果 cluster 增加了一个节点,那么对于每个连接数据库的客户端都...
从一个“普通”的Oracle DBA(Oracle数据库管理员)转变为Oracle Applications DBA(Oracle应用程序数据库管理员),有两个内容你必须去弄清楚。第一个内容是如何成为一个Oracle Applications DBA(Oracle应用程序...
oracle 11g 环境下,通过一个监听,对应多个实例的配置。
Lag和Lead函数可以在一次查询中取出同一字段的前N行的数据和后N行的值。这种操作可以使用对相同表的表连接来实现,不过使用LAG和LEAD有更高的效率。 代码如下:CREATE TABLE salaryByMonth( employeeNo varchar2(20)...
ORACLE课程,ORACLE课程。ORACLE课程
Oracle批处理:使用C# 自带Oracle驱动一次执行多条Sql语句