最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

sqlite3之select语句的子句:group,having, order

运维笔记admin17浏览0评论

sqlite3之select语句的子句:group,having, order

sqlite3之select语句的子句:group,having, order

文章目录

    • select 子句
    • group by
    • having
    • order by
    • 输出行数筛选
    • 常用函数

sqlite3初步

select 子句

select语句的基本格式自然是select * from,定制化查询需要在后面加一个where,但查询之后可能还要对查询结果进行处理,所以select语句并不算完,其完整结构如下

SELECT [DISTINCT] select_heading
FROM source_tables
WHERE filter_expression
GROUP BY grouping_expressions
HAVING filter_expression
ORDER BY ordering_expressions
LIMIT count
OFFSET count

除了where之外,其他子句含义如下

命令说明
group by对数据分组
having过滤分组结果
order by对查询结果排序
limit限制提取行数
offset提取偏移量,即跳过开头的行数

group by

group by可以执行分组操作,以前20名国家GDP数据为例,若想得到每个大洲的GDP数据,那么就可以通过group by子句实现,示例如下

select continent, sum(gdp) from gdp group by continent;

返回结果如下

continent  sum(gdp)
---------  ---------
亚洲         296800.0
大洋洲        16800.0
欧洲         182748.09
美洲         309300.0

having

从语法格式来说,group by在where后面,也就是说group是在where语句结束之后才执行的。换言之,在执行group by语句之后没法再通过where来筛选,所以额外需要一个筛选指令,此即having。

仍以各大洲GDP为例,如果想获取GDP大于10万亿的大洲,那么

select continent, sum(gdp) from gdp group by continent having sum(gdp)>100000;

返回结果如下,的确是把大洋洲过滤掉了。

continent  sum(gdp)
---------  ---------
亚洲         296800.0
欧洲         182748.09
美洲         309300.0

order by

order by指令可用于排序, 比如想让输出按照gdp升序排序,那么在上一条语句后面再加上order by sum(gdp) asc

select continent, sum(gdp) from gdp group by continent having sum(gdp)>100000 order by sum(gdp) asc;

其中asc表示升序,如果替换为desc则是降序。升序的返回结果如下

continent  sum(gdp)
---------  ---------
欧洲         182748.09
亚洲         296800.0
美洲         309300.0

输出行数筛选

通过limit和offset关键字,可以指定输出行数和输出行的位置,由于上一条指令太长了,所以下面新开一条语句,总之记住这两个子句放在最后就对了

select * from gdp order by gdp desc limit 5 offset 3;

表示根据gdp降序排序,跳过最前面的3条,然后选择5条,查询结果如下

rank  nation  continent  gdp      ratio
----  ------  ---------  -------  --------
4     德国      欧洲         40700.0  0.040494
5     印度      亚洲         33900.0  0.033662
6     英国      欧洲         30700.0  0.030535
7     法国      欧洲         27800.0  0.027674
8     俄罗斯     欧洲         22400.0  0.022279

常用函数

在group by语句中用到了函数sum用于求和,sqlite3中提供了诸如sum的一些常用函数

函数功能函数功能
count计数
max最大值min最小值
sum求和avg平均值
random随机整数
abs绝对值
upper转大写lower转小写
length字符串长度
发布评论

评论列表(0)

  1. 暂无评论