# Postgres 数据库

# 用户管理

# 查看当前用户

select * from current_user;

# 修改密码
ALTER ROLE user1 PASSWORD 'newpassword';

# 建立一个超级用户
CREATE USER yourname WITH SUPERUSER PASSWORD 'yourpassword';


CREATE USER "xxxxx" with encrypted password 'xxxxx';
1
2
3
4
5
6
7
8
9
10

# 建立数据库指定到组

CREATE USER "spring-xxxx" with encrypted password 'xxxxx';

CREATE DATABASE "spring-xxxx"
  WITH OWNER "spring-xxxx"
  TEMPLATE template0
  ENCODING UTF8
  LC_COLLATE 'en_US.UTF-8'
  LC_CTYPE 'en_US.UTF-8';

ALTER DATABASE "spring-xxxx" OWNER TO "spring-xxxx";
GRANT ALL ON DATABASE "spring-xxxx" to "spring-xxxx";
1
2
3
4
5
6
7
8
9
10
11

# 窗口函数

# 窗口帧

  • ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
    在这个窗口帧中, UNBOUNDED PRECEDING 表示从当前分区的第一行开始,而 CURRENT ROW 表示当前行。因此, ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW 表示窗口函数将计算从当前分区的第一行到当前行的范围。
  • ROWS BETWEEN AND :使用行偏移量来指定窗口帧的起始和结束位置。你可以使用数字或关键字来表示偏移量。
    例如, ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING 表示窗口帧包括当前行及其前后相邻的行。
  • RANGE BETWEEN AND :使用值的范围来指定窗口帧的起始和结束位置。这种方式适用于基于数值的列,例如日期或时间。你可以使用数字或关键字来表示范围。 例如,RANGE BETWEEN INTERVAL '1' DAY PRECEDING AND CURRENT ROW` 表示窗口帧包括当前行及其前一天的数据。
  • GROUPS BETWEEN <start> AND <end> :使用分组的偏移量来指定窗口帧的起始和结束位置。这种方式适用于基于分组的窗口函数,如 PERCENT_RANKCUME_DIST 。你可以使用数字来表示偏移量。 例如, GROUPS BETWEEN 2 PRECEDING AND 2 FOLLOWING 表示这些窗口帧方式提供了更灵活的方式来定义窗口函数的计算范围。

在窗口函数中, PRECEDING 是用于指定窗口帧起始位置的关键字之一。它可以与行偏移量一起使用,表示相对于当前行的前面的行数。 PRECEDING 的前面可以是一个数字,表示具体的行数,也可以是关键字 UNBOUNDED ,表示到分区的第一行。 以下是一些示例,展示了使用 PRECEDING 的不同方式:

  • ROWS BETWEEN 1 PRECEDING AND CURRENT ROW :表示窗口帧包括当前行及其前一行。
  • ROWS BETWEEN 3 PRECEDING AND 1 PRECEDING :表示窗口帧包括当前行的前三行到前一行。
  • ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW :表示窗口帧包括当前分区的第一行到当前行。
  • ROWS BETWEEN 2 PRECEDING AND UNBOUNDED FOLLOWING :表示窗口帧包括当前行的前两行到分区的最后一行。 通过使用 PRECEDING 关键字,你可以根据具体的需求在窗口函数中定义起始位置。希望这个解释对你有帮助!如果你有其他问题,请随时提问。