问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

oracle 统计每年每月数据

发布网友 发布时间:2022-04-09 10:51

我来回答

4个回答

热心网友 时间:2022-04-09 12:20

第一步:创建表

--支出表  
create table PAY  
(  
  ID       NUMBER(11) not null,  
  PAY_NAME VARCHAR2(100),  
  AUTHOR   VARCHAR2(100),  
  TYPE_ID  NUMBER(11),  
  PRICE    FLOAT, --金额  
  BRIEF    VARCHAR2(1000),  
  USERID   NUMBER(11), --用户ID  
  TIMES    DATE, --时间  
  PRIMARY KEY(ID)  
)

第二步:插入数据

insert into PAY (ID, PAY_NAME, AUTHOR, TYPE_ID, PRICE, BRIEF, USERID, TIMES)  
values (1, '1', '1', 0, 1, '1', 1, to_date('12-10-2012', 'dd-mm-yyyy'));  
insert into PAY (ID, PAY_NAME, AUTHOR, TYPE_ID, PRICE, BRIEF, USERID, TIMES)  
values (0, '3', '3', 1, 3, '3', 1, to_date('12-10-2012', 'dd-mm-yyyy'));  
insert into PAY (ID, PAY_NAME, AUTHOR, TYPE_ID, PRICE, BRIEF, USERID, TIMES)  
values (2, '2', '2', 1, 2, '2343444', 1, to_date('12-10-2012', 'dd-mm-yyyy'));  
insert into PAY (ID, PAY_NAME, AUTHOR, TYPE_ID, PRICE, BRIEF, USERID, TIMES)  
values (6, '6', '1', 0, 4000, '1', 1, to_date('12-08-2012', 'dd-mm-yyyy'));  
insert into PAY (ID, PAY_NAME, AUTHOR, TYPE_ID, PRICE, BRIEF, USERID, TIMES)  
values (5, '5', '1', 0, 1, '1', 1, to_date('12-10-2012', 'dd-mm-yyyy'));  
insert into PAY (ID, PAY_NAME, AUTHOR, TYPE_ID, PRICE, BRIEF, USERID, TIMES)  
values (4, '4', '1', 0, 100, '1', 1, to_date('12-09-2012', 'dd-mm-yyyy'));  
insert into PAY (ID, PAY_NAME, AUTHOR, TYPE_ID, PRICE, BRIEF, USERID, TIMES)  
values (7, '4', '1', 0, 566, '1', 1, to_date('03-03-2012', 'dd-mm-yyyy'));  
insert into PAY (ID, PAY_NAME, AUTHOR, TYPE_ID, PRICE, BRIEF, USERID, TIMES)  
values (11, '4', '1', 0, 566, '1', 1, to_date('03-04-2012', 'dd-mm-yyyy'));  
insert into PAY (ID, PAY_NAME, AUTHOR, TYPE_ID, PRICE, BRIEF, USERID, TIMES)  
values (10, '4', '1', 0, 566, '1', 1, to_date('03-05-2012', 'dd-mm-yyyy'));  
insert into PAY (ID, PAY_NAME, AUTHOR, TYPE_ID, PRICE, BRIEF, USERID, TIMES)  
values (9, '4', '1', 0, 566, '1', 1, to_date('03-06-2012', 'dd-mm-yyyy'));  
insert into PAY (ID, PAY_NAME, AUTHOR, TYPE_ID, PRICE, BRIEF, USERID, TIMES)  
values (8, '4', '1', 0, 566, '1', 1, to_date('03-07-2012', 'dd-mm-yyyy'));  
commit;

第三步:执行分组查询

SELECT SUM(DECODE(EXTRACT(MONTH FROM B.TIMES), 1, B.PRICE, 0)) AS A,  
       SUM(DECODE(EXTRACT(MONTH FROM B.TIMES), 2, B.PRICE, 0)) AS B,  
       SUM(DECODE(EXTRACT(MONTH FROM B.TIMES), 3, B.PRICE, 0)) AS C,  
       SUM(DECODE(EXTRACT(MONTH FROM B.TIMES), 4, B.PRICE, 0)) AS D,  
       SUM(DECODE(EXTRACT(MONTH FROM B.TIMES), 5, B.PRICE, 0)) AS E,  
       SUM(DECODE(EXTRACT(MONTH FROM B.TIMES), 6, B.PRICE, 0)) AS F,  
       SUM(DECODE(EXTRACT(MONTH FROM B.TIMES), 7, B.PRICE, 0)) AS G,  
       SUM(DECODE(EXTRACT(MONTH FROM B.TIMES), 8, B.PRICE, 0)) AS H,  
       SUM(DECODE(EXTRACT(MONTH FROM B.TIMES), 9, B.PRICE, 0)) AS I,  
       SUM(DECODE(EXTRACT(MONTH FROM B.TIMES), 10, B.PRICE, 0)) AS J,  
       SUM(DECODE(EXTRACT(MONTH FROM B.TIMES), 11, B.PRICE, 0)) AS K,  
       SUM(DECODE(EXTRACT(MONTH FROM B.TIMES), 12, B.PRICE, 0)) AS L  
  FROM PAY B  
 WHERE USERID = 1  
   AND EXTRACT(YEAR FROM B.TIMES) = '2012'

第四步:输出结果

热心网友 时间:2022-04-09 13:38

select year,
sum(case when month=1 then amount else 0 end) m1,
sum(case when month=2 then amount else 0 end) m2,
sum(case when month=3 then amount else 0 end) m3,
sum(case when month=4 then amount else 0 end) m4
from 表名
group by year

热心网友 时间:2022-04-09 15:13

解题思路你可以参考一下行转列,具体SQL如下:

select year, sum(m1) m1, sum(m2) m2, sum(m3) m3, sum(m4) m4
  from (select year,
               decode(month, 1, amount, 0) m1,
               decode(month, 2, amount, 0) m2,
               decode(month, 3, amount, 0) m3,
               decode(month, 4, amount, 0) m4
          from table_name) a
 group by year
 order by year
-- 1. 首先使用decode函数进行行转列
-- 2. 再按年进行分组,统计每个月份的值

有问题请追问,希望可以帮到你

热心网友 时间:2022-04-09 17:04

你是怎么写的?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
电脑上制作相册时转换源文件用电脑如何制作相册视频 二十四节气立秋的特点 立秋的来历和风俗-今日头条 立秋这个节气的特点 立秋节气的特点和由来-今日头条 怎么设置电脑键盘灯光笔记本怎么开键盘背光 苹果电脑win10键盘灯怎么开 苹果电脑win10键盘灯打开方法 为什么我电脑CPU 什么都不运行温度还100以上? 麻烦大家看看我的cpu温度不稳定 电脑cpu热怎么解决电脑cpu过热要怎么解决 电脑cpu温度高怎么解决办法 船用螺旋桨厂家 自己在家更换麦芒6电池? 狗狗怎么画? 小狗怎么画? 对财务管理与会计基础的认识 怎么简单的画小狗? 是否存在总监理工程师证书?与注册监理工程师有什么区别? 生产部门的考核指标数据应由职能部门提供? 问一下总监理工程师证是国家职业技能鉴定中心颁发的,能不能认可? 大丰收菜的方法是? 大丰收鱼庄的做法的所有配菜 看了一个电视剧,里面说西红柿和黄瓜不可以在一起吃,是吗?还有什么菜不可以混在一起吃的? 大丰收鱼庄什么菜好吃推荐下? 大丰收小碟牛肉怎么做 大丰收菜的做法是什么? 请谈谈电话礼仪有哪些以及其重要性,不少于150个单词? 日本的礼节礼仪 日本的风土人情、生活习惯、礼仪礼节、人情世故、禁忌。 日本都有哪些礼仪,比如说见了朋友问好需要弯腰吗,等等等等 你对日本的商务礼仪有怎样的印象?你对日本的商务礼仪有了怎样的新认识?请用200-300字表述。 对于日本礼仪文化,你是怎么知道它的? 麦芒6怎么拆机? 手机怎么拆机 麦芒6? 小米u盘怎么样?时间长了会不会丢失文件 小米U盘怎么样?在用的人,说说它的质量,和性能 义乌个体工商户简易注销的流程是什么 义乌 注销个体工商户 义乌营业执照,税务登记证,组织机构代码证原始已注销应去哪里开注销证明 义乌公司注销流程是什么,如果不注销会怎么样 华为手机无法输入文字 干紫菜冷藏还是冷冻好 干紫菜怎么保存方法 泡过了的干紫菜可以放冰箱吗 怎么保存紫菜头不坏? 用水泡过的紫菜怎么保存 38妇女节送妈妈什么礼物好 联想m7450f打印机怎么打印 为什么晚上12点多发的朋友圈,才一个人点赞,是不是很多人刷朋友圈的时候不会拉到凌晨的时间段? 我在京东上申请的东莞农商银行额度是不是和白条额度一样? 东莞农商银行京东联名卡通过额度会发信息提醒吗? 微信朋友圈哪个时间点发东西赞的人会做多?