pgsql存储过程

由于部分企业数据库从aws迁移到腾讯云,导致有一个定时任务(从详情表汇总数据到统计表中)错过了触发,所以这部分企业的数据需要触发重新刷一下,但是又有规定白天不允许上线,只能把定时任务的逻辑用存储过程(函数)实现一遍,通过这种方式把数据刷正确。下面是完整的存储过程示例:

 --删除储存过程--DROP FUNCTION f_sys_statlog_month(text,text,text) --新建储存过程
CREATE OR REPLACE FUNCTION "public"."f_sys_statlog_month"(beginTime TEXT,endTime TEXT,monthTime TEXT)RETURNS "pg_catalog"."void" AS $BODY$ 
DECLAREc_record record;BEGINdelete from sys_statlog_month where statistics_time = monthTime;for c_record inwith used_set as (SELECTb.user_id,sum(case when b.client_type='1' THEN 1 else 0 end) as client_1, sum(case when b.client_type='2' THEN 1 else 0 end) as client_2, sum(case when b.client_type='4' THEN 1 else 0 end) as client_4,sum(case when b.client_type='5' THEN 1 else 0 end) as client_5FROM sys_statlog bWHERE 1 = 1and b.occur_time >= to_date(beginTime,'yyyy-MM-dd')AND b.occur_time < to_date(endTime,'yyyy-MM-dd')and b.operate_type IN ('1', '2')and b.user_id != 999GROUP BY b.user_id)select id,COALESCE(client_1, 0) as client_1,COALESCE(client_2, 0) as client_2,COALESCE(client_4, 0) as client_4,COALESCE(client_5, 0) as client_5 from sys_employee a1left join used_set a2 on a1.id=a2.user_idwhere a1.status in ('1','2')union ALLselect id,COALESCE(client_1, 0) as client_1,COALESCE(client_2, 0) as client_2,COALESCE(client_4, 0) as client_4,COALESCE(client_5, 0) as client_5 from sys_employee a1join used_set a2 on a1.id=a2.user_idwhere a1.status= '0'loopinsert into sys_statlog_month(id, user_id,creator_id,create_time,client_type_1,client_type_2,client_type_4,client_type_5,statistics_time)values (cast(RANDOM() * 10000000000000 as int8), c_record.id,-10000,now(), c_record.client_1,c_record.client_2, c_record.client_4,c_record.client_5,monthTime);end loop;END; 
$BODY$LANGUAGE plpgsql VOLATILECOST 100---下面sql演示刷2023年11月份的数据
select f_sys_statlog_month('2023-11-01','2023-12-01','202311');

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/210854.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL SELECT 语句

SELECT 语句用于从数据库中选取数据。 SQL SELECT 语句 SELECT 语句用于从数据库中选取数据。 结果被存储在一个结果表中&#xff0c;称为结果集。 SQL SELECT 语法 SELECT column1, column2, ... FROM table_name; 与 SELECT * FROM table_name; 参数说明&#xff1a; …

五花八门客户问题(BUG) - 用好strace

strace简介 strace是一个用于跟踪系统调用和信号传递的Linux命令,它是一个集诊断、调试、统计于一体的工具。strace可以监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。它底层使用内核的ptrace特性来实现其功能。 strace最简单的用法是执行一个指定…

二分查找|双指针:LeetCode:2398.预算内的最多机器人数目

作者推荐 本文涉及的基础知识点 二分查找算法合集 滑动窗口 单调队列&#xff1a;计算最大值时&#xff0c;如果前面的数小&#xff0c;则必定被淘汰&#xff0c;前面的数早出队。 题目 你有 n 个机器人&#xff0c;给你两个下标从 0 开始的整数数组 chargeTimes 和 runnin…

Django回顾7

一.Django缓存 1.缓存介绍 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次的的后台操作,都会消耗很多的服务端资源,所以必须使用缓存来减轻后端服务器的压力…

算法:最长公共前缀(横向扫描和纵向扫描)

横向扫描 时间复杂度 O(m * n)&#xff0c;空间复杂度O(1) /*** param {string[]} strs* return {string}*/ var longestCommonPrefix function(strs) {// 先把第一个字符串拿出来let str strs[0]// 用 startsWith 检查数组中每个字符串是否以当前字符串为前缀while(!strs.e…

听GPT 讲Rust源代码--src/tools(11)

File: rust/src/tools/rust-analyzer/crates/hir/src/lib.rs 在Rust源代码中&#xff0c;rust/src/tools/rust-analyzer/crates/hir/src/lib.rs文件的作用是定义了Rust语言的高级抽象层次&#xff08;Higher-level IR&#xff0c;HIR&#xff09;。它包含了Rust语言的各种结构和…

Python:核心知识点整理大全10-笔记

目录 5.4 使用 if 语句处理列表 5.4.1 检查特殊元素 toppings.py 5.4.2 确定列表不是空的 5.4.3 使用多个列表 5.5 设置 if 语句的格式 5.6 小结 第6章 字 典 6.1 一个简单的字典 alien.py 6.2 使用字典 6.2.1 访问字典中的值 6.2.2 添加键—值对 6.2.3 先创建一…

智能优化算法应用:基于蜉蝣算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于蜉蝣算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于蜉蝣算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.蜉蝣算法4.实验参数设定5.算法结果6.参考文献7.MA…

JAVA+SSM+springboot+MYSQL企业物资库存进销存管理系统

。该系统从两个对象&#xff1a;由管理员和员工来对系统进行设计构建。主要功能包括首页、个人中心、员工管理、项目信息管理、仓库信息管理、供应商管理、项目计划管理、物资库存管理、到货登记管理、物资出库管理、物资入库管理等功能进行管理。本企业物资管理系统方便员工快…

linux 定时任务

使用 crontab Usage: crontab [-u user] [-e|-l|-r] Crontab 的格式说明如下: * 逗号(‘,’) 指定列表值。如: “1,3,4,7,8″ * 中横线(‘-’) 指定范围值 如 “1-6″, 代表 “1,2,3,4,5,6″ * 星号 (‘*’) 代表所有可能的值 */15 表示每 15 分钟执行一次 # Use the ha…

C++编程法则365天一天一条(24)RTTI运行时类型信息typeid和type_info

文章目录 基本用法编译时或运行时判定 基本用法 typeid 是 C 的一个运算符&#xff0c;它用于获取表达式的类型信息。它返回一个 std::type_info 对象引用&#xff0c;该对象包含有关表达式的类型的信息。 要使用 typeid 运算符&#xff0c;需要包含 <typeinfo> 头文件…

关于振动试验

这是试验的说明&#xff08;来自gbt4710-2009&#xff09; 这是试验的参数&#xff1a; 一、试验方向&#xff1a; 振动试验中有几个方向 除有关规范另有规定外&#xff0c;应在产品的三个互相垂直方向上进行振动试验。 一般定义产品长边为X轴向&#xff0c;短边为Y轴向&…

飞书面试题汇总

面试相关经验 Interview | JavaGuide(Java面试 学习指南) 同学1 7次面试 编程题汇总&#xff1a; 有序链表找中位数 &#xff08;飞书1面&#xff09; m个有序数组合并 &#xff08;飞书1面&#xff09; 海量数据寻找TopK&#xff08;口述&#xff09; &#xff08;飞书…

Android 10(Q) 以上普通 APP 隐藏应用图标问题探究及解决方案

1、实验环境 aosp 版本 10.0 系统 aosp 版本 13.0 系统 2、验证结果 2.1 方式一 APP AndroidManifest.xml 中通过 activity-alias 配置带 LAUNCHER 属性 category&#xff0c;并且 android:enabled“true” 10.0 系统中可安装后正常显示 icon&#xff0c;通过 setComponen…

idea中run和debug是灰色的

【现象】idea中run和debug是灰色的 点击 旁边的Add Configuration…一看都是空白 【解决方法】&#xff1a; npm点开之后 【结果】

文本转图像 学习笔记

VQGAN (Vector Quantized Generative Adversarial Network) 是一种基于 GAN 的生成模型&#xff0c;可以将图像或文本转换为高质量的图像。 VQ &#xff08;Vector Quantization&#xff09;是一种数据压缩技术&#xff0c;是指将连续数据表示为离散化的向量。输入的图像或文本…

转换NC或HDF数据时候转出数据无坐标信息的处理方法

有时候我们在转换NC或HDF数据时&#xff0c;有时候会出现没有坐标信息的情况&#xff01;如下图&#xff1a; 这种情况一般是原始数据将坐标信息存储在说明文件中以便后期做生成坐标信息的处理、或坐标存储的形式比较特殊&#xff0c;造成工具无法读取&#xff01;这种数据处理…

Python迭代器与生成器研究记录

Python迭代器与生成器研究记录 前言 迭代器肯定是可迭代对象&#xff0c;但是可迭代对象不一定是迭代器&#xff0c;生成器一定是迭代器&#xff0c;但是迭代器不一定是生成器 生成器是特殊的迭代器&#xff0c;所以生成器一定是迭代器&#xff0c;迭代器一定是可迭代对象 我…

YOLOv8分割训练及分割半自动标注

YOLOv8是基于目标检测算法YOLOv5的改进版,它在YOLOv5的基础上进行了优化和改进,加入了一些新的特性和技术,如切片注意力机制、骨干网络的选择等。 本文以yolov8-seg为基准,主要整理分割训练流程及使用v8分割模型进行半自动标注的过程。 一、v8-seg训练 1.1 环境配置 github…