镇江网站托管/深圳平台推广
文章目录
- 1、获取指定日期所在年份
- 2、获取指定日期所在月份
- 3、获取指定日期去年同期日期
- 4、获取指定日期所在年份的总天数
- 5、获取年初到指定日期的天数
- 6、除法运算
- 7、递归查询
- 8、REPLACE函数
- 9、DECODE 函数
- 10、聚合函数
- 11、窗口函数
- 11.1 ROW_NUMBER函数
- 11.2 RANK函数
- 11.3 LEAD 和 LAG函数
- 11.4 SUM函数
- 11.4.1 统计年度累计金额
- 11.4.2 统计去年同期累计金额
- 11.5 数据透视(pivot)操作
- 12、常用sql
- 13、ORACLE表闪回
- 14、DBLink
- 14.1 创建 Database Link
- 14.2 查询远程数据库
- 14.3 执行 DML 操作
- 14.4 删除 Database Link
- 14.5 授权 Database Link
- 14.6 确认授权
1、获取指定日期所在年份
SELECTEXTRACT(YEAR FROM TO_DATE('2023-11-02', 'yyyy-MM-dd')) AS year
FROMdual;
2、获取指定日期所在月份
SELECTEXTRACT(MONTH FROM TO_DATE('2023-11-02', 'yyyy-MM-dd')) AS month
FROMdual;
3、获取指定日期去年同期日期
SELECTADD_MONTHS(TRUNC(TO_DATE('2023-11-02', 'yyyy-MM-dd')), -12) AS last_date
FROMdual;
4、获取指定日期所在年份的总天数
1、使用 EXTRACT 函数从日期字符串 ‘2023-11-15’ 中提取年份;
2、TO_DATE(‘2023-11-02’, ‘YYYY-MM-DD’) 将日期字符串转换为日期格式;
3、TO_CHAR(…, ‘YYYY’) 将日期转换为字符串;
4、 TO_NUMBER 将字符串转换为数字;
5、MOD 函数用于计算年份除以 4 的余数,如果余数为 0,则该年为闰年,返回 366 天;否则返回 365 天。
SELECTCASEWHEN (MOD(EXTRACT(YEAR FROM TO_DATE('2023-11-02', 'yyyy-MM-dd')),4) = 0AND MOD(EXTRACT(YEAR FROM TO_DATE('2023-11-02', 'yyyy-MM-dd')),100) != 0)OR MOD(EXTRACT(YEAR FROM TO_DATE('2023-11-02', 'yyyy-MM-dd')),400) = 0THEN 366ELSE 365END AS days
FROMdual;
5、获取年初到指定日期的天数
TRUNC(your_date, ‘YYYY’)用于将日期截断为年初。然后,通过从日期列中减去年初的日期来计算到年初的天数。天数需要加1。
SELECTTO_DATE('2023-01-02', 'yyyy-MM-dd') - trunc( TO_DATE('2023-01-02', 'yyyy-MM-dd'), 'yyyy') + 1 AS days
FROMdual;
6、除法运算
CASEWHEN amt = 0 THEN NULL-- 或者其他处理方式,比如返回 NULLELSE ROUND(pay_amt / amt, 4)* 100
END AS ratio
对于除法运算,要判断除数是否为0
,当除数为 NULL时
,计算结果通常也是 NULL
。
7、递归查询
用于层次结构的数据,比如组织架构、地区划分等。
SELECT*
FROMrelationship a
START WITHa.parent_code = '0'
CONNECT BYPRIOR a.code = a.parent_code;
- 起始条件是 parent_code=‘0’,然后通过
connect by prior
条件递归地沿着自连接关系遍历子集; START WITH
子句指定了起始条件,这里是从parent_code='0'
的记录开始;CONNECT BY PRIOR
子句用于指定递归条件,a.code = a.parent_code
表示每次迭代都会沿着 code 和 parent_code 相等的路径向下查找;
8、REPLACE函数
REPLACE 函数会将原始日期中的年份部分替换为另一个字段的年份部分。确保替换后的格式与原始日期相匹配。
--original_date 是原始日期字段。
--another_date 是作为替换参考的日期字段。
--desired_date 是想要替换成的日期字段。SELECTREPLACE(TO_CHAR(original_date, 'YYYY-MM-DD'), TO_CHAR(another_date, 'YYYY'), TO_CHAR(desired_date, 'YYYY')) AS replaced_date
FROM your_table;
9、DECODE 函数
DECODE 函数是 Oracle 提供的一种条件表达式函数,用于根据指定条件返回不同的结果。
DECODE(expression, search1, result1, search2, result2, ..., default_result)decode(i2.incom_year_amt,0,null,ROUND((i1.incom_year_amt-i2.incom_year_amt)/ i2.incom_year_amt, 4)* 100) AS incratio
- expression 是需要进行比较的表达式或列;
- search1, search2, … 是希望与表达式比较的值;
- result1, result2, … 是如果表达式等于相应搜索值时返回的结果;
- default_result 是当表达式与所有搜索值均不匹配时的默认返回值(可选的);
- DECODE 函数按照给定的搜索值逐个匹配表达式,如果找到匹配的搜索值,则返回相应的结果。如果没有找到匹配的搜索值,且提供了默认结果,则返回默认结果。
10、聚合函数
- 常见的聚合函数包括 SUM、AVG、COUNT、MAX、MIN 等;
- 用于将多行数据聚合为单个结果,例如计算总和、平均值、计数等;
- 经常用于与 GROUP BY 子句一起使用,以便按组执行聚合操作;
SELECTsum(amt) AS all_amt
FROM your_table group by mof_div_code,report_date;
11、窗口函数
- 常见的窗口函数包括 ROW_NUMBER、RANK、LEAD、LAG、SUM 等;
- 用于对数据集中的特定窗口(也称为分区)执行计算;
- 可以在查询结果中添加一列或几列,而不会像聚合函数那样汇总数据。窗口函数通常与 OVER 子句一起使用,该子句定义了要应用窗口函数的数据窗口;
语法:
<窗口函数>(列) OVER (PARTITION BY 分区字段ORDER BY 排序字段ROWS/RANGE 子句
)
11.1 ROW_NUMBER函数
为结果集中的每一行分配一个唯一的数字,通常用于排序后按顺序编号。
SELECT column1,column2,ROW_NUMBER() OVER (ORDER BY column1) AS row_num
FROM your_table;
11.2 RANK函数
为结果集中的每一行分配一个排名,如果有相同值,则排名相同,下一个排名按照次序递增。
SELECT RANK() OVER (ORDER BY column_name) AS rank_value,column_name
FROM table_name;
11.3 LEAD 和 LAG函数
LEAD() 和 LAG():分别用于获取当前行后面和前面的行的值。
SELECT RANK() OVER (ORDER BY column_name) AS rank_value,column_name
FROM table_name;
11.4 SUM函数
用于计算指定列的总和,结合窗口函数使用时可计算分组内的累计总和。比如需要统计某一年到指定日期的汇总金额。
SELECT column_name,SUM(column_name) OVER (PARTITION BY group_column ORDER BY order_column) AS running_total
FROM table_name;
11.4.1 统计年度累计金额
SUM(INCOM_DAY_AMT) OVER (PARTITION BY FISCAL_YEAR ORDER BY MOF_DIV_CODE,FUND_TYPE_CODE,REPORT_DATE) AS cur_day_total
- SUM(INCOM_DAY_AMT): 这部分是求和的基本函数;
- OVER: 表示开始窗口函数的定义;
- ARTITION BY EXTRACT(YEAR FROM REPORT_DATE): 这个部分是将数据按照年份进行分区,意味着对每一年的数据进行分组;
- ORDER BY MOF_DIV_CODE, FUND_TYPE_CODE, REPORT_DATE: 这里指定了窗口函数的排序顺序,首先按照 MOF_DIV_CODE、FUND_TYPE_CODE、REPORT_DATE 进行排序;
综合起来,这个查询会对每年的数据进行分组
,并按照给定的顺序计算每个分组内的累计金额
,结果将返回每一行数据所在年度的累计金额
。
11.4.2 统计去年同期累计金额
SUM(INCOM_DAY_AMT) OVER (PARTITION BY EXTRACT(YEAR FROM ADD_MONTHS(TRUNC(REPORT_DATE), -12)) ORDER BY MOF_DIV_CODE,FUND_TYPE_CODE,ADD_MONTHS(TRUNC(REPORT_DATE), -12)) AS pre_year_to_date_total
11.5 数据透视(pivot)操作
PIVOT 是 SQL 中的一种操作,它用于将行数据转换为列数据,可以进行数据透视(pivot)操作。PIVOT 操作常用于聚合和重新排列数据,将行转换为列以更直观地展示汇总信息。
SELECT *
FROM (-- 原始查询,生成需要透视的数据-- 包含需要进行透视操作的字段
)
PIVOT (-- 聚合函数和要透视的字段AGGREGATE_FUNCTION(column_name)FOR pivot_column IN (value1 AS alias1, value2 AS alias2, ..., valueN AS aliasN)
)
- AGGREGATE_FUNCTION:聚合函数,例如 SUM()、COUNT()、AVG() 等;
- column_name:要透视的列;
- pivot_column:用于透视的列,即希望将其值作为新列的列;
- value1, value2, …, valueN:pivot_column 列中可能包含的值;
- alias1, alias2, …, aliasN:可选,为透视后的列指定别名;
举例:
SELECT *
FROM (SELECT department, employee_name, salaryFROM employee_salary
)
PIVOT (SUM(salary)FOR department IN ('HR' AS hr_salary, 'IT' AS it_salary, 'Finance' AS finance_salary)
)
将 employee_salary 表按照部门进行透视
,生成新的列 ‘HR’ AS hr_salary, ‘IT’ AS it_salary, ‘Finance’ AS finance_salary,每列包含相应部门的薪资总和
。
12、常用sql
- 金额字段增减随机数
UPDATE tablename
SET CL_CUR_AMT = CL_CUR_AMT - FLOOR(DBMS_RANDOM.VALUE(100000000, 500000000)) where REPORT_DATE = TO_DATE('2022-12-03','yyyy-MM-dd') ;
- 替换字段指定位置值
SUBSTR 函数结合 CONCAT 或 || 运算符来替换一个字段的前两位。
--CONCAT
UPDATE FM_LEDGER_AGENCY set MOF_DIV_CODE = CONCAT('21', SUBSTR(MOF_DIV_CODE , 3)) ;-- || 运算符
SELECT 'new' || SUBSTR(old_field, 3) AS replaced_field
FROM your_table;
- LISTAGG函数
LISTAGG 函数用于将多行数据聚合成一个以指定分隔符分隔的字符串。它通常与 GROUP BY 子句一起使用,用于对分组内的数据进行字符串连接。
SELECT LISTAGG(sub_mof_div_code, ',') WITHIN GROUP (ORDER BY sub_mof_div_code) AS name_list
from GAP_MOF_DIV_RELATION group by mof_div_code
这个查询的结果将返回一个名为 name_list 的列
,其中包含了按照每个 mof_div_code 分组的所有 sub_mof_div_code 值
,以逗号分隔,并按照 sub_mof_div_code 进行排序后的字符串。
13、ORACLE表闪回
- 闪回前进行查询
select * from (select * from GAP_MENU as of timestamp to_timestamp('2023-08-17 19:50:00','YYYY-MM-DD HH24:MI:SS'))where NAME in ('三保预警管理','三保运行监测','三保风险管控','三保配置管理');
- 被闪回的表必须启用行移动功能
alter table GAP_MENU enable row movement;
- 指定时间闪回
flashback table GAP_MENU to scn timestamp_to_scn (to_date('2023-08-17 19:50:00','yyyy-mm-dd hh24:mi:ss'));
- 关闭移动功能
alter table GAP_MENU enable row movement;
14、DBLink
DBLink 提供了一种方式来执行跨数据库的查询和操作。
14.1 创建 Database Link
--remote_db 链接指定的名称
--remote_user、remote_password是远程数据库的用户名和密码
--remote_db_host 主机
--remote_db_service 服务名
create public database link remote_db
connect to remote_user identified by remote_password
using
'(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =remote_db_host)(PORT = 1521))
(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = remote_db_service)))';
14.2 查询远程数据库
SELECT * FROM table_name@remote_db;
14.3 执行 DML 操作
INSERT INTO remote_table@remote_db (column1, column2) VALUES (value1, value2);
14.4 删除 Database Link
DROP DATABASE LINK remote_db;
14.5 授权 Database Link
GRANT CREATE DATABASE LINK TO your_user;
14.6 确认授权
SELECT * FROM DBA_SYS_PRIVS WHERE PRIVILEGE = 'CREATE DATABASE LINK' AND GRANTEE = 'your_user';
相关文章:

【Oracle】常用数据库sql记录
文章目录 1、获取指定日期所在年份2、获取指定日期所在月份3、获取指定日期去年同期日期4、获取指定日期所在年份的总天数5、获取年初到指定日期的天数6、除法运算7、递归查询8、REPLACE函数9、DECODE 函数10、聚合函数11、窗口函数11.1 ROW_NUMBER函数11.2 RANK函数11.3 LEAD …...

在线监控网址源码/ 网站监控工具源码/ 网站监控系统源码/定时任务/网站网址URL状态监控神器
源码介绍: 在线监控网址源码、 网站监控工具源码,它作为网站监控系统源码,有定时任务,支持卡密充值,是网站网址URL状态监控神器。让数据库监控更加简单和专业。远程云中监控、实时邮件告警、丰富的指标和图表、分析和…...

【Mysql】myisam和innodb的区别?
0 回答 myisam引擎是5.1版本之前的默认引擎,支持全文检索、压缩、空间函数等,但是不支持事务和行级锁,所以一般用于有大量查询少量插入的场景来使用,而且myisam不支持外键,并且索引和数据是分开存储的。innodb是基于聚簇索引建立的,和myisam相反它支持事务、外键,并且通…...

vue 集成行政区域选择插件region和数据回显
故事:最近,项目需要进行行政区域围栏的绘制,由于老旧项目是利用js保存全国行政区域地址和编码,在选择器select进行匹配显示,但此方法复杂,因此选择集成区域插件region 步骤一:用命令安装region…...

The LINQ expression “xxx“ could not be translated
错误示例: var A B .GroupBy(item > item.id) .Select(groupedList > new { PlannerId groupedList.Key, RxList groupedList }); 解决方案: var A B .GroupBy(item > item.id) .Select(groupedList > new { PlannerId groupedList.…...

ubuntu下搜索文件的几种方法
一、whereis命令: whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。 whereis的命令格式: whereis [-bmsu] [BMS 目录名 -f ] 文…...

openCV图像SIFT特征
SIFT(尺度不变特征变换)是一种用于计算图像局部特征的算法,它对图像的尺度、旋转和亮度变化具有不变性。SIFT特征在计算机视觉领域被广泛应用于目标识别、图像配准、三维重建等任务中。 SIFT特征的计算包括以下几个步骤: 尺度空…...

黑豹程序员-axios+springmvc传递数组
问题 奇怪的现象,axios在往后台传递数组时,springmvc竟然接收不到 解决 尝试多次无果,突然看一篇文章写vue中的数组不是真正的数组需要强转转化JSON.stringify 将信将疑下测试了一把,还真的传递成功了。 不光要JSON.stringify…...

34.用过JavaConfig方式的spring配置吗?它是如何替代xml的?
用过JavaConfig方式的spring配置吗?它是如何替代xml的? 基于Java的配置,允许你在少量的Java注解的帮助下,进行你的大部分Spring配置而非通过XML文件。 以@Configuration 注解为例,它用来标记类可以当做一个bean的定义,被Spring IOC容器使用。 另一个例子是@Bean注解,它…...

解析Python的Lambda函数:【理解】与【运用】
目录 引言理解Lambda函数定义语法Lambda函数的特点 Lambda函数使用场景举例小结结束语 引言 在Python编程语言中,Lambda函数是一种特殊的函数形式,它以【简洁】、【快速】和【轻量级】而闻名。Lambda函数在需要短小函数的地方非常有用,比如在…...

C语言:实现字符串连接
在C语言中,字符串通常以字符数组的形式存储。连接两个或多个字符串是一项常见的任务。本博客将介绍如何使用C语言来实现字符串的连接。 库函数实现: strcat() 是C标准库中提供的一个函数,用于将一个字符串(源字符串)…...

物联网终端设备众多,为何遥测终端机备受瞩目?
遥测终端机是一种用于数据采集、远程传输、数据存储与处理的综合体设备,已逐渐成为现代智能物联领域的焦点。遥测终端机集成了多种传感器与通信模块,能够实时采集各种环境参数,如温度、湿度、压力、流量等,同时支持无线通信&#…...

Swagger快速上手
快速开始: 导入maven包 <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.7.0</version> </dependency><dependency><groupId>io.springfox<…...

1.1 Python的起源与发展
一、Python的起源 Python的起源可以追溯到1989年,当时荷兰计算机科学家Guido van Rossum在阿姆斯特丹的CWI(荷兰计算机科学研究所)工作。他曾参与开发过一门名为ABC的语言,然而这门语言并未能成为主流。因此,Guido va…...

springboot + thymeleaf + layui 初尝试
一、背景 公司运营的同事有个任务,提供一个数据文件给我,然后从数据库中找出对应的加密串再导出来给他。这个活不算是很难,但时不时就会有需求。 同事给我的文件有时是给excel表格,每一行有4列,逗号隔开,…...

2024年网络安全竞赛-Web安全应用
Web安全应用 (一)拓扑图 任务环境说明: 1.获取PHP的版本号作为Flag值提交;(例如:5.2.14) 2.获取MySQL数据库的版本号作为Flag值提交;(例如:5.0.22) 3.获取系统的内核版本号作为Flag值提交;(例如:2.6.18) 4.获取网站后台管理员admin用户的密码作为Flag值提交…...

【改进YOLOv8】车辆测距预警系统:融合空间和通道重建卷积SCConv改进YOLOv8
1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 研究背景与意义: 随着交通工具的普及和道路交通的不断增加,车辆安全问题日益凸显。特别是在高速公路等高速道路上,车辆之间的距离和速度差异较…...

YOLOv8改进 | 2023Neck篇 | 利用RepGFPN改进特征融合层(附yaml文件+添加教程)
一、本文介绍 本文给大家带来的改进机制是Damo-YOLO的RepGFPN(重参数化泛化特征金字塔网络),利用其优化YOLOv8的Neck部分,可以在不影响计算量的同时大幅度涨点(亲测在小目标和大目标检测的数据集上效果均表现良好涨点…...

关于“Python”的核心知识点整理大全21
9.3.2 Python 2.7 中的继承 在Python 2.7中,继承语法稍有不同,ElectricCar类的定义类似于下面这样: class Car(object):def __init__(self, make, model, year):--snip-- class ElectricCar(Car):def __init__(self, make, model, year):supe…...

Sui承诺向流动性质押协议投入$SUI
Sui将提供SUI以支持三个流动性质押协议及其相应的流动性质押token( Liquid Staking Tokens,LST),为网络上不断增长的DeFi领域增加了流动性。此次注入将加强LST在交易和其他DeFi 用途中的流动性。 流动性质押让SUI所有者通过将其t…...

不知道CRM系统怎么选?这十款值得推荐
许多想要购买CRM软件的客户都因为市场上产品数量众多而不知从何下手。因此,我们以企业实力、品牌荣誉、企业在行业内的排名情况,结合网络口碑等多种因素为基础,为国内CRM软件建立了以下排行榜,并重点介绍排行榜前十的CRM软件供应商…...

智慧工地源码(微服务+Java+Springcloud+Vue+MySQL)
智慧工地系统是依托物联网、互联网、AI、可视化建立的大数据管理平台,是一种全新的管理模式,能够实现劳务管理、安全施工、绿色施工的智能化和互联网化。围绕施工现场管理的人、机、料、法、环五大维度,以及施工过程管理的进度、质量、安全三…...

有趣的数学 数学建模入门三 数学建模入门示例两例 利用微积分求解
一、入门示例1 1、问题描述 某宾馆有150间客房,经过一段时间的经营,该宾馆经理得到一些数据:如果每间客房定价为200元,入住率为55%;定价为180元,入住率为65%;定价为160元…...

【Monitor, Maintenance Operation, Script code/prgramme】
Summary of M,M&O,Program JD) Monitor & M&O Symbio信必优) Job chance/opportunities on Dec 12th, 20231.1) Content 招聘JD job description:1.2) suggestions from Ms Liang/Winnie on Wechat app1.3) Java微服务是什么?1.3.1) [URL Java 微服务](…...

python接口自动化测试(单元测试方法)
一、环境搭建 python unittest requests实现http请求的接口自动化Python的优势:语法简洁优美, 功能强大, 标准库跟第三方库灰常强大,建议大家事先了解一下Python的基础;unittest是python的标准测试库,相比于其他测试框架是python目前使用最广…...

【css】划过滚动条,滚动条加宽,划出时,变回原宽度
// 全局的滚动条样式 ::-webkit-scrollbar { //滚动条的宽度width: 4px;height: 6px; }::-webkit-scrollbar-thumb { //滚动条的滑块background-color: rgba(144, 147, 153, 0.6);border-radius: 4px; }// 内容区滚动条划过加宽 .content>div>div::-webkit-scrollbar {…...

飞天使-linux操作的一些技巧与知识点5-ansible之roles
文章目录 roles批量替换文件 role 的依赖关系role 的实际案例 roles tasks 和 handlers ,那怎样组织 playbook 才是最好的方式呢?简 单的回答就是:使用 Roles Roles 基于一个已知的文件结构,去自动的加载 vars,tasks 以…...

FPGA - 1、Simulink HDL coder模型例化到FPGA
Simulink HDL coder模型例化到FPGA 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右…...

02基于matlab的卡尔曼滤波
基于matlab的卡尔曼滤波,可更改状态转移方程,控制输入,观测方程,设置生成的信号的噪声标准差,设置状态转移方差Q和观测方差R等参数,程序已调通,需要直接拍下。...

基础算法(3):排序(3)插入排序
1.插入排序实现 插入排序的工作原理是:通过构建有序序列,对于未排序数据,在已经排序的序列从后向前扫描,找到位置并插入,类似于平时打扑克牌时,将牌从大到小排列,每次摸到一张牌就插入到正确的位…...