1.GROUP BY对数据进行分组
SQLite的GROUP BY 子句用于与SELECT语句一起使用,来对相同的数据进行分组。
在SELECT语句中,GROUP BY子句放在WHERE子句之后,放在ORDER BY子句之前。
用法:select 列名,列名 from 表名 group by 列名 order by 列名
例1:对CPU型号进行分组,并查询使用相同CPU的手机数(对CPU型号相同的信息合并)
SELECT "CPU型号",count(*) FROM Content GROUP BY "CPU型号" ORDER BY count(*) desc
count(*)表示记录次数
例2:将CPU型号,蓝牙都相同的手机合并
SELECT "CPU型号","蓝牙",count(*) FROM Content GROUP BY "CPU型号","蓝牙"
在上例中发现CPU型号为空的手机数量很多,我们可以利用select查询CPU为空的手机的网页,在网页里查询是否数据收集过程中出现了失误
select 名称,cpu型号,PageUrl from Content where cpu型号='' order by 名称
2. DISTINCT获取唯一记录
用法:select distinct 列名 from 表名
由上图可以看出查询CPU型号会出现很多重复的数据,使用DISTINCT关键字可以合并重复数据
例如:查询数据库中记录了多少种输入方式
select DISTINCT "输入方式" from Content
3. LIMIT限制select语句返回的数据量
例如:获取要查询信息的前6行
4. OFFSET设置select查询的偏移量
例如:上图数据若想要第三行开始到第六行的数据(偏移量是2,返回的行数为4)
5. select嵌套使用
例:查询手机名称,CPU型号及网站来源,要求选择CPU型号不为空且出现频率最高的前五种CPU,输出100行数据
命令:
select 名称,cpu型号,PageUrl from Content
where cpu型号 IN (SELECT "CPU型号" FROM Content where "CPU型号" <> '' GROUP BY "CPU型号" ORDER BY count(*) desc LIMIT 5 )
ORDER BY CPU型号 limit 100;