统计增加一个平均时间字段

  1. 问题描述
    对已有的统计数据,增加一个求两个时间差的列,要求
    (1).查询结果增加一列
    (2).结果是表中两个时间字段的差
    (3).查询的时间差要在某一条件下
    (4).对这个时间求平均值
  2. 解决思路
    对原始的sql进行改造
  3. 知识点
    ceil函数求两个时间的差,默认单位是天
    CASE WHEN when model.a=’1’ THEN model.b END增加条件

  4. 解决方法和注意问题

SELECT
    model.p,
   CAST( SUM(
        CASE
            WHEN model.a='1'
            THEN (ceil((model.LASTDATE - model.STARTDATE)))
        END) AS VARCHAR) as avgDate
FROM
    MAIN model
WHERE
    1=1
GROUP BY
    model.p
注:select a, b, cast(null as varchar), d 是强制类型转换,将null转换为varchar,防止hibernate转换报错;model.LASTDATE是时间类型数据。

5. 总结
熟悉了ceil函数的应用,以及to_char,to_date函数,decode函数,case when 条件。以及cast( a AS VARCHAR)解决 hibernate执行原生sql报错: No Dialect mapping for JDBC type: 1111,的解决办法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值