sql的强大功能(看一条sql解决的复杂业务)

    一条sql语句解决的复杂业务,请往下看:

    业务介绍:一个单位有多个立项(立项信息表里有单位id),每个立项可能被预警多次(预警信息表里的uuid字段的值里包含有立项id或单位id),每个预警事件又可能被督办多次(督办信息表里有预警id),最后需要统计出每个单位一年被督办的总次数(total)

    查询涉及的表有:立项表(special_task)、预警事件表(alarm_event)、预警被督办信息表(alarm_action_status_history)

    Sql语句:如下图所示

      

SELECT
  st.create_dept as dept_id
, count(*) as total
  FROM  yujing.special_task st
  right join yujing.alarm_event ae on ae.event_uuid like concat('zxjc\_4\_',st.create_dept)
                                   or ae.event_uuid like concat('zxjc\_4\_',st.id,'\_%')
  right join yujing.alarm_action_status_history ash
    on ash.risk_event_id = ae.id
   and ash.old_status in (2010,2020)
   and ash.new_status = 2020
   and ash.change_time >= '2013-01-01'
   and ash.change_time <= '2013-12-31'
 WHERE  st.create_dept = 34
        and st.type = 22
        and st.create_time >= '2013-01-01'
        and st.create_time <= '2013-12-31'

    总结:sql语句写好了不但能实现复杂的业务,还能提高程序的执行效率,而且还能让我们的程序逻辑变的更加简单,平时我们应该在这方便多下点功夫,这样做会给我们带来更高的效益、更多的鼓励。


  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值