postgresql从入门到菜鸟(三)基本命令和窗口函数

2023-11-17

上一篇我们已经在rhel上创建了数据库,并且建立的一张成绩表。之后通过通过客户端连接上服务器端。

这一篇将会写一些关于数据库的操作,首先是一些基本的操作的操作如选择数据库,查看表等等。

连接至服务器端后可以通过以下命令查看数据库的基本信息

\l:查看所有数据库。

\c:选择数据库 。    \c+dbname+username可以选择某用户进入数据库。

\dt;查看所有的表。

\d:查看表结构  \d+tablename

\q:退出psql指令。

 

sql方面采用标准sql即可。这里提一个和mysql对比,postgresql多出的一个函数,窗口函数。

先来看一下这个函数能干什么。

以上一篇文章中新建的成绩表为例,查询各科的平均分。

这个sql在mysql中可以以以下语句实现

 

select subject,avg(score) from score group by subject;

 subject |       avg        
---------+------------------
 语文    |               90
 化学    | 86.6666666666667
 物理    | 93.3333333333333
 数学    | 92.3333333333333
 英语    |               84

 

上面是使用聚集函数实现各科平均分查询,下面看下如何使用窗口函数来实现各科平均分的查询。

select distinct  subject,avg(score) over(PARTITION BY subject) from score;

 subject |       avg        
---------+------------------
 英语    |               84
 物理    | 93.3333333333333
 数学    | 92.3333333333333
 语文    |               90
 化学    | 86.6666666666667

可以看到,在使用窗口函数进行查询的时候添加了distinct 去重,这是因为,当使用窗口函数进行查询时,表内有多少记录,窗口函数就会打印多少条。

由此可见,窗口函数其实主要适用于进行原始数据和分类后的数据对比。

上面的这个例子可能不明显,下面再看一个对比功能的sql,查询所有人的分数,并和该科的平均分进行对比。

在聚集函数中查询列必须存在于group by中,所以要实现该功能较为困难。而窗口函数则可以轻而易举的实现。

select *,avg(score) over (PARTITION BY subject) from score order by id; 

id | name | subject | score |       avg        
----+------+---------+-------+------------------
  1 | wang | 数学    |    99 | 92.3333333333333
  2 | wang | 语文    |    80 |               90
  3 | wang | 物理    |    99 | 93.3333333333333
  4 | wang | 化学    |    98 | 86.6666666666667
  5 | wang | 英语    |    79 |               84
  6 | liu  | 数学    |    89 | 92.3333333333333
  7 | liu  | 语文    |    99 |               90
  8 | liu  | 物理    |    89 | 93.3333333333333
  9 | liu  | 化学    |    69 | 86.6666666666667
 10 | liu  | 英语    |    79 |               84
 11 | zan  | 数学    |    89 | 92.3333333333333
 12 | zan  | 语文    |    91 |               90
 13 | zan  | 物理    |    92 | 93.3333333333333
 14 | zan  | 化学    |    93 | 86.6666666666667
 15 | zan  | 英语    |    94 |               84

以上就是一些对于窗口函数的理解,有不对的地方还请指正。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

postgresql从入门到菜鸟(三)基本命令和窗口函数 的相关文章

随机推荐

  • 磐云PY-B8 网页注入

    文章目录 1 使用渗透机场景windows7中火狐浏览器访问服务器场景中的get php 根据页面回显获取Flag并提交 2 使用渗透机场景windows7中火狐浏览器访问服务器场景中的post php 根据页面回显获取Flag并提交 3
  • 无线网破解 跑字典 EWSA使用教程

    无线网破解 跑字典 EWSA使用教程 导入握手包 配置攻击字典 步骤阅读 配置EWSA 1 选项 字典DIY 字典设置 密码变化选项 把勾选都去掉 2 选项 字典DIY 字典设置 导入我们自己的字典 生日字典和8位纯数字字典 点击开始测试
  • Arduino编译错误解决办法:fork/exec:…\arm-none-eabi-g++.exe: The filename or extension is too long

    编译错误解决办法 fork exec arm none eabi g exe The filename or extension is too long 解决方案来自Edge Impulse 当使用Arduino编译STM或Arduino文
  • element-ui中,规定from表单提交的时间格式

    element ui中 规定from表单提交的时间格式 比如显示年月日时分秒 但是后台只需要年月日 这个时候就利用value format和format value format绑定值的格式也就是最后后端接口需要我们传的数据格式 forma
  • 【华为OD统一考试A卷

    华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一修改为OD统一考试 A卷 和OD统一考试 B卷 你收到的链接上面会标注A卷还是B卷 请注意 根据反馈 目前大部分收到的都是
  • Spring Boot 整合 MyBatis 实现乐观锁和悲观锁

    完整代码 https github com imcloudfloating Lock Demo GitHub Page http blog cloudli top posts Spring Boot MyBatis 实现乐观锁和悲观锁 原文
  • Oracle 数据库审计

    保证数据库的安全有两种方式 一种是通过权限的存取控制机制 即通过预先控制来防止安全事件的发生 另一种是数据库审计 即对数据库活动做跟踪记录 当发生安全事件时 通过对数据库活动记录进行审计来发现并修复安全问题 Oracle使用大量不同的审计方
  • 用Python写个弹球的游戏

    原创 xinxin 菜鸟学Python 我们前面讲了几篇关于类的知识点 为了让大家更好的掌握类的概念 并灵活的运用这些知识 我写了一个有趣又好玩的弹球的游戏 一来可以把类的知识融会一下 二来加深对Python的兴趣 你会发现哎呀Python
  • eclipse Maven 插件添加第三方远程仓库

    方法一 在maven 配置文件setting xml 添加镜像点 mirror eclipse的 preferences gt maven gt User Settings 你就可以看到你的setting xml文件的地址 打开settin
  • SqueezeNet运用到Faster RCNN进行目标检测+OHEM

    目录 目录 一SqueezeNet介绍 MOTIVATION FIRE MODULE ARCHITECTURE EVALUATION 二SqueezeNet与Faster RCNN结合 三SqueezeNetFaster RCNNOHEM
  • unity出pc的包,然后想调试C#的dll咋办

    加入我们的逻辑代码是以dll的方式 放到unity项目中如下 namespace CSharpDll public class Utils public int Add int a int b int c a b return c publ
  • 2013全球移动游戏产业白皮书

    2013全球移动游戏产业白皮书 在全球移动游戏产业迅猛发展的背景下 中国移动游戏产业也进入了 高铁 时代 2013年 中国国内Android和iOS活跃设备量已达到3 7亿部 并涌现出20余款月流水超过千万元的 明星 移动游戏产品 对其内容
  • mysql数据库各种应用_MySQL数据库常见管理应用(1)

    MySQL数据库常见管理应用 1 创建数据库 创建一个数据库solin mysql gt create database solin 建立一个名为solin gbk的GBK字符集 mysql gt create database solin
  • Java通过反射获取注解以及注解中的信息

    首先自定义两个注解 1 用于描述表名 只能用在类 接口 枚举上 Target ElementType TYPE Retention RetentionPolicy RUNTIME public interface TableName Str
  • 《现代控制系统》第五章——反馈控制系统性能分析 5.3 二阶系统的性能

    现在我们看一个单环二阶系统的单位阶跃响应 一个闭环反馈控制系统如下图所示 已知该闭环系统的转换方程为 把受控系统的转换方程代入进去得到 如果给一个阶跃输入 那么 查拉普拉斯逆变换表我们得到时域输出为 其中 同时也是特征方程在s域的根与原点的
  • 实际项目二次封装axios------request.js和使用

    前言 axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端 本质上也是对原生XHR的封装 只不过它是Promise的实现版本 符合最新的ES规范 在项目的实际开发中用到也比较多 这里我介绍一下实际开发中的基
  • 什么是高内聚、低耦合?

    起因 模块独立性指每个模块只完成系统要求的独立子功能 并且与其他模块的联系最少且接口简单 两个定性的度量标准 耦合性和内聚性 耦合性也称块间联系 指软件系统结构中各模块间相互联系紧密程度的一种度量 模块之间联系越紧密 其耦合性就越强 模块的
  • align-items属性

    弹性子元素在 侧轴 交叉轴上的对齐方式 align items stretch 默认值 如果弹性子元素没有高度或高度为auto 将占满整个容器的高度 align items flex start 子元素在侧轴顶端对齐 align items
  • CSS餐厅小游戏练习1~32关(附答案和链接)

    前言 CSS3众多基础常见的选择器都可以小游戏中学习 每天刷一遍 辅助记忆 做好熟练运用CSS3的第一步 小游戏链接 CSS3餐厅练习 玩法 利用各种选择器和选择器之间的关系选中抖动的物体即可通关 文章目录 第一关 Type Selecto
  • postgresql从入门到菜鸟(三)基本命令和窗口函数

    上一篇我们已经在rhel上创建了数据库 并且建立的一张成绩表 之后通过通过客户端连接上服务器端 这一篇将会写一些关于数据库的操作 首先是一些基本的操作的操作如选择数据库 查看表等等 连接至服务器端后可以通过以下命令查看数据库的基本信息 l