PostGIS学习教程五:简单的SQL语句

SQL,或"Structured Query Language-结构化查询语言",是对关系数据库进行查询数据和更新数据的一种方法。
当我们创建第一个数据库时,你已经看到了SQL:

SELECT postgis_full_version();

查看PostGIS的版本信息。
在前面的章节中,我们已经将数据加载到数据库中,现在让我们使用SQL来查询数据!例如:
“查看纽约市所有社区的名字?”
通过单击SQL按钮在pgAdmin中打开SQL查询窗口:
在这里插入图片描述
然后在查询窗口中输入以下查询语句:

SELECT name FROM nyc_neighborhoods;

并点击执行查询按钮:
在这里插入图片描述
查询将运行几毫秒并返回129个结果:
在这里插入图片描述
但这个过程中到底发生了什么?为了理解,让我们从SQL的四个”动词“开始:

SELECT —— 返回查询的行记录
INSERT —— 向表中添加新行记录
UPDATE —— 更改表中的现有行记录
DELETE —— 从表中删除行记录
我们几乎全部使用SELECT语句来使用空间函数,所以着重介绍SELECT语句。

文章目录

  • 一、SELECT查询
  • 二、简单SQL语句的练习
    • 三、本文涉及函数的列表


一、SELECT查询

SELECT查询通常采用以下形式:

SELECT some_columns FROM some_data_source WHERE some_condition;

注意:有关所有SELECT语句参数的概要,请参阅PostgreSQL文档

some_columns既可以是列名也可以是列值的函数,some_data_source既可以是单个表,也可以是通过连接两个表而创建的组合表。some_condition相当于一个过滤器,它限制要返回的行数。

”查看布鲁克林所有社区的名字?“

我们使用一个过滤器来查询nyc_neighborhoods表,这张表内包含了纽约所有的街区信息,但我们只想要查看属于布鲁克林(行政区)的那些社区:

SELECT name
FROM nyc_neighborhoods
WHERE boroname = 'Brooklyn';

查询将只花费比上次查询更少的时间,并返回23个结果:
在这里插入图片描述
有时,我们需要对查询的结果应用一个函数,例如:

“布鲁克林所有社区的名字里各有多少个字母?”

幸运的是,PostgreSQL有一个字符串长度函数,char_length(string):

SELECT char_length(name)
FROM nyc_neighborhoods
WHERE boroname = 'Brooklyn';

在这里插入图片描述
通常,我们对单个行记录数据不感兴趣,而对基于所有行记录数据的统计数据更感兴趣。
因此,知道各个社区名字的长度可能不如知道所有社区名字的长度的平均值有趣。
接受多行记录并返回单个结果的函数称为“聚合(aggregate)函数"。
PostgreSQL有一系列内置的聚合函数,包括求平均值的avg()函数和求标准差的stddev()函数。
“布鲁克林所有社区名字的平均字母数和字母数的标准差是多少?”

SELECT avg(char_length(name)), stddev(char_length(name))
FROM nyc_neighborhoods
WHERE boroname = 'Brooklyn';

在这里插入图片描述
在这里插入图片描述
上面示例中的聚合函数应用于结果记录集中的每一行。
如果我们希望在整个结果集中对各个子数据集分组进行处理,该怎么办?
我们可以使用GROUP BY子句。
聚合函数通常需要添加GROUP BY语句,以便基于一个或多个列对结果记录集进行分组求值。
“基于各个行政区进行分组,纽约市各个行政区的所有社区名字的平均字母数是多少?”

SELECT boroname, avg(char_length(name)), stddev(char_length(name))
FROM nyc_neighborhoods
GROUP BY boroname;

我们将boroname列包含在输出结果中,以便确定哪个统计数据对应于哪个行政区。

在聚合查询中,只能输出GROUP BY子句对应的列或聚合函数对应的列。
在这里插入图片描述
在这里插入图片描述

二、简单SQL语句的练习

使用nyc_census_blocks表,回答以下问题(不要急着回答!)。
下面是一些有用的信息,回想一下上一章节中的nyc_census_blocks表的定义。
在这里插入图片描述
下面是一些常见的SQL聚合函数,你可能会发现它们很有用:

avg() —— 返回一个数值列的平均值
sum() —— 返回一个数值列的和
count() —— 返回一个列的记录数
下面是问题:

第一个问题:“纽约市的总人口是多少?”

答案:

SELECT Sum(popn_total) AS population
FROM nyc_census_blocks;

在这里插入图片描述
注意:关键字AS是什么意思?AS用于为表或列指定别名。设置合适的别名可以使查询结果更容易理解。与本来要输出的列名sum不同,我们使用AS关键字将其改为population。

第二个问题:“布朗克斯(Bronx)行政区的总人口是多少?”

答案:

SELECT Sum(popn_total) AS population
FROM nyc_census_blocks
WHERE boroname = 'The Bronx';

在这里插入图片描述
第三个问题:“对每个行政区来说,白人占该行政区总人口的百分比是多少?”

答案:

SELECTboroname,100 * Sum(popn_white)/Sum(popn_total) AS white_pct
FROM nyc_census_blocks
GROUP BY boroname;

在这里插入图片描述

三、本文涉及函数的列表

char_length(string) —— 返回字符串中的字符数
avg(expression) —— 返回一个数值列的平均值的PostgreSQL聚合函数
stddev(expression) —— 返回输入值的标准差的PostgreSQL聚合函数
count(expression) —— 返回一个列的记录数的PostgreSQL聚合函数
sum(expression) —— 返回一个数值列的和的PostgreSQL聚合函数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/142856.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

应届裁员,天胡开局——谈谈我的前端一年经历

应届裁员,天胡开局——谈谈我的前端一年经历 许久没有更新了,最近一个月都在忙,没错,正如题目所说,裁员然后找工作… 这周刚重新上班,工作第二天,感慨良多,记录些什么吧。 去年十…

基于springboot实现学生选课平台管理系统项目【项目源码】计算机毕业设计

基于springboot实现学生选课平台管理系统演示 系统开发平台 在该地方废物回收机构管理系统中,Eclipse能给用户提供更多的方便,其特点一是方便学习,方便快捷;二是有非常大的信息储存量,主要功能是用在对数据库中查询和…

Outlook如何恢复已删除邮件

Outlook如何恢复已删除邮件 操作指引: Outlook客户端恢复最近7天删除的邮件: Outlook客户端要求最新版本,如没有如下选项,建议联机更新windows update 网页邮箱恢复最近7天删除的邮件:

MySQL 社区开源备份工具 Xtrabackup 详解

文章目录 前言1. Xtrabackup 介绍1.1 物理备份与逻辑备份区别1.2 Xtrabackup 系列版本 2. Xtrabackup 部署2.1 下载安装包2.2 二进制部署2.3 程序文件介绍2.4 备份需要的权限 3. Xtrabackup 使用场景3.1 本地全量备份3.2 本地压缩备份3.3 全量流式备份3.3.1 备份到远程主机3.3.…

0基础学习PyFlink——水位线(watermark)触发计算

在《0基础学习PyFlink——个数滚动窗口(Tumbling Count Windows)》和《0基础学习PyFlink——个数滑动窗口(Sliding Count Windows)》中,我们发现如果窗口中元素个数没有把窗口填满,则不会触发计算。 为了解决长期不计算的问题&a…

Interactive Analysis of CNN Robustness

Interactive Analysis of CNN Robustness----《CNN鲁棒性的交互分析》 摘要 虽然卷积神经网络(CNN)作为图像相关任务的最先进模型被广泛采用,但它们的预测往往对小的输入扰动高度敏感,而人类视觉对此具有鲁棒性。本文介绍了 Pert…

微信小程序display常用属性和子元素排列方式介绍

wxss中display常用显示属性与css一致,介绍如下: 针对元素本身显示的属性: displayblock,元素显示换行displayinline,元素显示换行,但不可设置固定的宽度和高度,也不可设置上下方向的margin和p…

Python | 机器学习之聚类算法

​🌈个人主页:Sarapines Programmer🔥 系列专栏:《人工智能奇遇记》🔖少年有梦不应止于心动,更要付诸行动。 目录结构 1. 机器学习之聚类算法概念 1.1 机器学习 1.2 聚类算法 2. 聚类算法 2.1 实验目的…

Riskified: 2023年电商政策滥用问题恶化,正严重挑战商家盈利底线

2023年11月14日,中国上海 —— 近日,由全球领先的电子商务欺诈和风险智能解决方案提供商 Riskified 发布的《政策滥用及其对商家的影响:2023年全球参考基准》报告显示,政策滥用问题正进一步恶化,超过九成电商商家正在承…

七个优秀微服务跟踪工具

随着微服务架构复杂性的增加,在问题出现时确定问题的根本原因变得更具挑战性。日志和指标为我们提供了有用的信息,但并不能提供系统的完整概况。这就是跟踪的用武之地。通过跟踪,开发人员可以监控微服务之间的请求进度,从而使他们…

WebSocket真实项目总结

websocket websocket是什么? websocket是一种网络通讯协议。 websocket 是HTML5开始提供的一种在单个TCP链接上进行全双工通讯的协议。 为什么需要websocket? 初次接触websocket,都会带着疑惑去学习,既然已经有了HTTP协议,为什么还需要另一…

【数据结构】——单链表(增删查改)

目录 前言: 一:单链表的特点 ​编辑 二:单链表实现 单链表定义 2.1申请节点(初始化) 2.2单链表尾插 ​编辑 2.3单链表打印 2.4单链表头插 2.5单链表尾删 2.6单链表头删 2.7单链表查找 2.8在目标位置后面插入…

通用结构化剪枝DepGraph

文章目录 0. 前言一. 第一部分: Torch-Pruning1.1 传统的剪枝流程 - ResNet-18结构化剪枝1.2 Torch-Pruning剪枝 - ResNet-18结构化剪枝1.3 Torch-Pruning剪枝 - 遍历所有分组1.4 Torch-Pruning剪枝 - 剪枝器 High-level Pruners1.5 Torch-Pruning剪枝 - 拓展到更复杂的神经网…

基于入侵杂草算法优化概率神经网络PNN的分类预测 - 附代码

基于入侵杂草算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于入侵杂草算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于入侵杂草优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神…

Python机器学习、深度学习提升气象、海洋、水文领域实践应用

Python是功能强大、免费、开源,实现面向对象的编程语言,能够在不同操作系统和平台使用,简洁的语法和解释性语言使其成为理想的脚本语言。除了标准库,还有丰富的第三方库,Python在数据处理、科学计算、数学建模、数据挖…

【Apifox】国产测试工具雄起

在开发过程中,我们总是避免不了进行接口的测试, 而相比手动敲测试代码,使用测试工具进行测试更为便捷,高效 今天发现了一个非常好用的接口测试工具Apifox 相比于Postman,他还拥有一个非常nb的功能, 在接…

vue-组件通信(动态组件)

​🌈个人主页:前端青山 🔥系列专栏:Vue篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容:vue-组件通信|动态组件 目录 组件通信 1.父传子 2.子传父 3.ref 4.兄弟组件 5.跨层级 provid…

Xilinx Zynq 7000系列中端FPGA解码MIPI视频,基于MIPI CSI-2 RX Subsystem架构实现,提供5套工程源码和技术支持

目录 1、前言免责声明 2、我这里已有的 MIPI 编解码方案3、本 MIPI CSI2 模块性能及其优缺点4、详细设计方案设计原理框图OV5640及其配置权电阻硬件方案MIPI CSI-2 RX SubsystemSensor Demosaic图像格式转换Gammer LUT伽马校正VDMA图像缓存AXI4-Stream toVideo OutHDMI输出 5、…

【JavaEE】Servlet(创建Maven、引入依赖、创建目录、编写及打包、部署和验证、smart Tomcat)

一、什么是Servlet? Servlet 是一种实现动态页面的技术. 是一组 Tomcat 提供给程序猿的 API, 帮助程序猿简单高效的开发一个 web app 1.1 Servlet能干什么? 🚕允许程序猿注册一个类, 在 Tomcat 收到某个特定的 HTTP 请求的时候, 执行这个类…

P3371 【模板】单源最短路径(弱化版)

【模板】单源最短路径(弱化版) 题目背景 本题测试数据为随机数据,在考试中可能会出现构造数据让SPFA不通过,如有需要请移步 P4779。 题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路…