oracle 按id统计出金额的总数,并按日期显示出最新的数据

原创 2015年11月17日 19:47:11

一、场景:

表statistics_test

a_id      money   in_time

1             20        2015-11-12

1             10        2015-11-13

2             4          2015-10-09

2             36        2015-10-10

将该表的数据,以id统计金额的总数,记录的数量,并显示出最大日期的记录

即输出:

a_id        in_time        count           sum_money

1         2015-11-13         2                 30

2         2014-10-10         2                  40

二、问题解决

该问题的解决分为三步:

(1)先按id进行统计,采用group by  ,输出a_id,count,sum_money作为一张表P;

    select a_id,sum(money),count(a_id) from statistics_test group by a_id; 注意使用了group by子句后,select后面的字段只能是group by后出现的字段,之外的字段已聚集函数的形式,出现在select后面,select出来的结果集可以作为一张表,与oracle库中的表进行连接;

(2)将表P与表statistics_test进行关联,输出时间字段;

(3)最后按a_id找出日期最大的记录。

   找日期最大的采用的单表自身关联,借助于max函数来实现

如下:

SELECT a.a_id,a.in_time,P.cou,P.mon FROM statistics_test a,(select a_id,count(a_id) as cou,sum(money) as mon from statistics_test Group By A_ID) P where a.a_id = P.a_id and a.in_time =(select max(a1.in_time) from statistics_test a1 where a.a_id = a1.a_id);

 总结:

(1)对group by的使用方法;

  (2)   select 后的结果集可以与数据表进行等值连接;

  (3)  按重复字段找日期最大的记录的方法(按重复字段自身连接);

Oracle按日期分组统计数据

昨天项目突然改了个需求,要求折线图的数据显示,必须按照月三天,季度九天来分组统计数据,网上搜索了一堆,差点没找着相关的!还好找到了类似的,现整理下提供给有需要的大家参考参考! (本人是在Oracle数...
  • ClamLaw520
  • ClamLaw520
  • 2016年12月20日 11:18
  • 1764

oracle 按id统计出金额的总数,并按日期显示出最新的数据

一、场景: 表statistics_test a_id      money   in_time 1             20        2015-11-12 1           ...
  • zcc_0015
  • zcc_0015
  • 2015年11月17日 19:47
  • 1081

oracle 按id统计出金额的总数,并按日期显示出最新的数据

一、场景: 表statistics_test a_id      money   in_time 1             20        2015-11-12 1           ...
  • zcc_0015
  • zcc_0015
  • 2015年11月17日 19:47
  • 1081

ORACLE分组查询和统计等

select flow_id,rw from (select t.flow_id ,rownum as rw from apex_030200.wwv_flow_list_templates t)  ...
  • oppoppoppo
  • oppoppoppo
  • 2016年12月06日 19:55
  • 588

Oracle按时间统计sql

1.统计某天24小时中,没个小时段的订单数
  • lp1137917045
  • lp1137917045
  • 2014年08月07日 09:48
  • 2004

sql语句分别按日,按周,按月,按季统计金额

sql语句分别按日,按周,按月,按季统计金额如: 表:consume_record 字段:consume (money类型) date (datetime类型) 请问怎么写四条sql语句分别按日,按周...
  • diligentcat
  • diligentcat
  • 2011年03月24日 10:28
  • 2111

Oracle EBS 信用(Credit)额度(1)-基础设置

Oracle EBS 启用信用额度最基础的设置: Default Credit Check Rules-定义信用检查规则 Default Credit Usage Rules-定义信用用途规则 Def...
  • chenxianping
  • chenxianping
  • 2015年04月09日 20:06
  • 4345

oracle根据时间对数据进行统计每天生成的量

今天突然有个需求,说是要统计每天的数据对应生成了多少,对于oracle一贯不熟的话懵逼了,只好查百度 首先将创建日期进行格式化,oracle的时间格式化为      例子:SELEC...
  • zxc_user
  • zxc_user
  • 2017年10月24日 12:21
  • 186

按照日期统计每天用户数量

SELECT count(distinct userNum) as newcount,date(from_unixtime(addtime)) as time FROM `userlist` gro...
  • yangyun_1999
  • yangyun_1999
  • 2014年11月13日 14:05
  • 570

统计各个商品每月的销售金额

统计各个商品每月的销售金额 select t.cardcode '客户编码',t1.itemcode '物料编码', isnull(convert(dec(18,2),sum(case mon...
  • sz_bdqn
  • sz_bdqn
  • 2014年09月28日 16:41
  • 1644
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:oracle 按id统计出金额的总数,并按日期显示出最新的数据
举报原因:
原因补充:

(最多只允许输入30个字)