SQL,即"Structured Query Language-结构化查询语言",是对关系数据库进行查询数据和更新数据的一种语言。
SELECT查询
SELECT查询通常采用以下形式:
SELECT some_columns FROM some_data_source WHERE some_condition;some_columns既可以是列名也可以是列值的函数,some_data_source既可以是单个表,也可以是通过连接两个表而创建的组合表。some_condition相当于一个过滤器,它限制要返回的行数。
”查看布鲁克林所有社区的名字?“
我们使用一个过滤器来查询nyc_neighborhoods表,这张表内包含了纽约所有的街区信息,但我们只想要查看属于布鲁克林(行政区)的那些社区:
SELECT name
FROM nyc_neighborhoods
WHERE boroname = 'Brooklyn';有时,我们需要对查询的结果应用一个函数,例如:
"布鲁克林所有社区的名字里各有多少个字母?"
幸运的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子句对应的列或聚合函数对应的列。
Comments