数据库学习
ZeWe
偷影子的人
展开
-
表设计 -- 一表多改动,设置数据更新版本号和更新时间
最近有一张数据表,有多个业务需求需要修改此表,修改的方式为先取出表中的数据,修改其中的某些字段后再次保存。为了防止多个业务先后修改,导致前一个修改被覆盖,所以新建一个更新版本号和新增时间字段。修改时先查询数据库中的数据版本号(最新版本号)和自己一开始取到数据的版本号是否一致,一致则直接修改,不一致先刷新到最新版数据,再确定是否要修改。...原创 2019-02-28 20:37:46 · 2227 阅读 · 0 评论 -
ORCALE : 计算满足某种条件的连续日期的天数
最近有一个需求:查询满足某种条件的数据,且需求满足该条件连续的天数。模拟一个场景:如下面这张表求昨日,日销量大于5000的商店商品,且计算已经连续多少日。结果如下:想法:根据 门店编号,商品编号分组,日期倒序排序,求排名数,并且计算该条数据日期到今日的差值。如果该差值等于排名数,这证明天数连续,count(*)求满足条件的数值。SQL语句:with...原创 2019-03-20 10:55:12 · 1295 阅读 · 2 评论 -
ORACLE - 行列转换
编写sql 时经常会遇到行列转换问题,下面记录一下我常用的几种方式。一、列转行一般使用 union 函数就可以了,11g 提供了新函数unpivot(列转行) 比较简单。这里就不提及了二、行转列大多数遇到的场景都是行转列的场景原数据列表将相同 NAME 的 ID 组合起来1、使用wm_concat 函数-- 将 name 相同的 id 合并为一列...原创 2019-07-21 00:12:16 · 880 阅读 · 0 评论 -
ORACLE - 开窗+分析函数
分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计值。 开窗函数指定了函数所能影响的窗口范围,也就是说在这个窗口范围中都可以受到函数的影响,有些分析函数就是开窗函数。开窗函数over 存在两种情况 一种只使用 partition by 做分组 后 全组范围内分析...原创 2019-07-21 00:28:42 · 556 阅读 · 0 评论 -
ORACLE - 自定义函数
ORACLE 自定义函数语法结构:CREATE [OR REPLACE] FUNCTION 函数名 ( 参数1 model 类型1 [DEFAULT xx], 参数2 model 类型2 [DEFAULT xx], 参数3 model 类型3 [DEFAULT xx])RETURN 返回类型[DETERMINISTIC]IS/AS--声明部分 BEGIN...原创 2019-08-02 14:17:47 · 404 阅读 · 0 评论 -
数据库表分区
数据库表分区数据库分区是一种物理数据库设计技术,主要目的是为了在特定的SQL操作中减少数据读写的总量以缩减响应时间。表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间(物理文件上),查询数据时不用扫描整张表,提高数据检索的效率。分区的两种形式水平分区(以 row 分)这种形式分区是对表的行进行分区,通过这样的方式不同分组里面的物理列分割的数据集得以组合,从而...原创 2019-08-20 22:44:26 · 2618 阅读 · 0 评论 -
数据库索引
数据库索引文章目录数据库索引定义优缺点索引类型建立普通索引或组合索引适合建立索引的情况索引失效的sql定义索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。数据库索引好比是一本书前面的目录,能加快数据库的查询速度。索引分为聚簇索引和非聚簇索引两种,聚簇索引是按照数据存放的物理位置为顺序的,而非聚簇索引就不一样了;聚簇索引能提高多行检索的速度,而非聚簇...原创 2019-08-20 22:49:54 · 4720 阅读 · 3 评论 -
ORACLE - 求 某年 -某月/某周 最后一天日期
求 某年某周 的最后一天; 周定义: 每年1月1号 为第一周的开始,周一为周的第一天CREATE OR REPLACE FUNCTION func_week_lastdate(ye IN NUMBER, we IN NUMBER) RETURN VARCHAR2 IS first_week_day NUMBER; sub_days NUMBER; week_lastdate VARC...原创 2019-08-26 14:07:27 · 813 阅读 · 0 评论