Compare commits
8 Commits
424b9882bb
...
ed8630d100
| Author | SHA1 | Date | |
|---|---|---|---|
| ed8630d100 | |||
| afaa00c056 | |||
| bb902c36fc | |||
| c7547ed9cc | |||
| 4f7b0e7b77 | |||
| d0271db938 | |||
| e287715e64 | |||
| d56729ce9f |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,2 +1,3 @@
|
||||
.idea
|
||||
.vscode
|
||||
tmp*.sql
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
# InnoDB引擎页大小
|
||||
# InnoDB引擎页大小,默认16k
|
||||
show global status like 'Innodb_page_size';
|
||||
|
||||
# 查询用户
|
||||
# Buffer Pool 默认大小是 128M
|
||||
show variables like '%innodb_buffer_pool%';
|
||||
|
||||
# 查询MySQL用户
|
||||
select *
|
||||
from mysql.user;
|
||||
|
||||
|
||||
@@ -2,3 +2,36 @@
|
||||
alter user postgres with password '123456';
|
||||
-- 查询所有用户
|
||||
select * from pg_catalog.pg_user;
|
||||
|
||||
-- 查询表的 COLLATION VERSION
|
||||
SELECT
|
||||
datname,
|
||||
datcollversion,
|
||||
pg_collation_actual_version((SELECT oid FROM pg_collation WHERE collname = 'default')) as system_version
|
||||
FROM pg_database
|
||||
WHERE datname IN ('fortern', 'postgres', 'kt_shop')
|
||||
ORDER BY datname;
|
||||
|
||||
-- 重建索引
|
||||
REINDEX DATABASE postgres;
|
||||
ALTER DATABASE postgres REFRESH COLLATION VERSION;
|
||||
|
||||
REINDEX DATABASE fortern;
|
||||
ALTER DATABASE fortern REFRESH COLLATION VERSION;
|
||||
|
||||
REINDEX DATABASE kt_shop;
|
||||
ALTER DATABASE kt_shop REFRESH COLLATION VERSION;
|
||||
|
||||
-- 重置某表的某列的自增序列 [表名]_[列名]_seq
|
||||
ALTER SEQUENCE person_id_seq RESTART WITH 4284858;
|
||||
|
||||
-- ctid 会返回一个元组,元组中第一个数字是 page number, 第二个是 slot number。
|
||||
select r.ctid, r.* from study.r;
|
||||
-- 得到
|
||||
-- "(0,1)",1,101
|
||||
-- "(0,2)",2,102
|
||||
-- "(0,3)",3,103
|
||||
|
||||
-- 删除一条
|
||||
delete from study.r where id = 101;
|
||||
-- 得到
|
||||
10
PostgreSQL/time.sql
Normal file
10
PostgreSQL/time.sql
Normal file
@@ -0,0 +1,10 @@
|
||||
-- 设置会话时区
|
||||
SET TIME ZONE 'Asia/Shanghai';
|
||||
|
||||
-- AT TIME ZONE 在 PostgreSQL 中是重载的,行为取决于左侧的类型:
|
||||
-- timestamp WITHOUT time zone AT TIME ZONE zone → 把该 wall time 视为 zone 的本地时间,然后转换为 UTC,结果为 timestamptz(显示为 UTC 偏移后的时间)。
|
||||
-- timestamptz AT TIME ZONE zone → 把该瞬间转换成 zone 的本地 wall time,结果为 timestamp WITHOUT time zone。
|
||||
select msg_time at time zone 'Asia/Shanghai' from msg where id = 1;
|
||||
select msg_time at time zone 'UTC+8' from msg where id = 1;
|
||||
|
||||
select to_timestamp(1761850339) AT TIME ZONE 'Asia/Shanghai';
|
||||
22
PostgreSQL/windows_fun.sql
Normal file
22
PostgreSQL/windows_fun.sql
Normal file
@@ -0,0 +1,22 @@
|
||||
-- 窗口函数
|
||||
-- row_number(): 对相等的值【不区分】,相当于行号,相等的值对应的排名不同,序号从1到n连续
|
||||
-- rank(): 相等的值排名相同,但若有相等的值,则序号从1到n不连续。符合一般人思维中的排名
|
||||
-- dense_rank(): 对相等的值排名相同,但序号从1到n连续
|
||||
|
||||
-- 先按num分区,每个区内按id排序
|
||||
select id, num, id - row_number() over (partition by num order by id) as rnk
|
||||
from employee;
|
||||
|
||||
-- 找出所有至少连续出现三次的数字
|
||||
-- 先按num分区,每个区内按id排序
|
||||
-- 一个分区内,如果数字连续,那么id会不断+1,row_number()也会不断+1,id - row_number()差值不变
|
||||
-- 在按照id - row_number()聚合,使用count(*)统计,count(*)的结果就是连续出现的次数
|
||||
select r.num, r.rnk, count(*)
|
||||
from (select num, id - row_number() over (partition by num order by id) as rnk from employee) as r
|
||||
group by r.num, r.rnk;
|
||||
|
||||
select distinct r.num as ConsecutiveNums
|
||||
from (select num, id - row_number() over (partition by num order by id) as rnk from employee) as r
|
||||
group by r.num, r.rnk
|
||||
having count(*) >= 3
|
||||
limit 1;
|
||||
Reference in New Issue
Block a user