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.…

喷墨打印的简单介绍

喷墨打印是一种常见的打印技术,使用液体墨水将图像或文本喷射到纸张或其他打印材料上。以下是喷墨打印的主要特点,优秀的喷头厂家,应用场景以及未来发展趋势的概述: **喷墨打印的特点:** 1. **高分辨率:**…

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

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

切换为root用户后,conda:未找到命令

问题:切换为root用户后,conda:未找到命令 结论详细用户切换配置路径 结论 问题:切换为root用户后,conda:未找到命令 (anaconda) 解决:在~/.bashrc配置里增加conda的路径 详细 用户切换 1 切…

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年全球参考基准》报告显示,政策滥用问题正进一步恶化,超过九成电商商家正在承…

Linux中的find、grep

find 用法:find 路径 -name 文件名 在指定的路径下查找指定的文件, 会从指定路径下包括所有的子目录当中寻找 grep grep 查找信息 文件名 在指定的文件中查找指定的内容 grep 查找信息 文件名 -n 在指定的文件中查找指定的内容将 查找到的内容整行输出并…

七个优秀微服务跟踪工具

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

vue如何解决跨域?原理?

Vue.js本身并不直接解决跨域问题,而是依赖于浏览器的同源策略。但是,Vue提供了一些方法来帮助我们解决跨域问题。 原理: 浏览器的同源策略规定,不同源(协议、域名、端口)之间的网络请求受到限制&#xff…

WebSocket真实项目总结

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

GEE教程——Landsat7影像条带修复填充方法(核函数线性插值填充)填充后的NDVI为例

简介: Landsat 7卫星的传感器为ETM+传感器,它有8个波段,其中第一波段为蓝色波段,第二波段为绿色波段,第三波段为红色波段。由于该传感器的扫描镜头故障,在接收到的数据中存在条带状的颜色差异,导致图像质量下降。修复该问题的一种方法是使用更高分辨率的传感器数据来填…

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

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

唯坚持而已

写在前面 假如有一天我失业了: 大葱一毛二一斤,卖一三轮车三百斤还不到40块钱,我会回乡种大葱么? 小麦、玉米块儿八毛的一斤,亩产1000斤,五亩地,一年一茬小麦一茬玉米,才万把块钱&a…

通用结构化剪枝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神…