查询结果排序可以使用 ORDER BY 语句,默认的排序方式为升序,如果要设置降序排序,可以设置关键字 DESC。例如:我们要按照年龄对customers进行升序排列:
#排序 #按照年龄排序 sql = "SELECT * FROM customers ORDER BY age" mycursor.execute(sql) myresult=mycursor.fetchall() for x in myresult: print(x)执行代码,得到的结果为:
n zxx m nb
LIMIT
当数据库数量非常大的时候,为了限制查询的数据量,可以采用"LIMIT"语句来指定,比如我们希望在customers表中找出工资最高的三个人:
#找出其中工资最高的3个人 sql = "SELECT * FROM customers ORDER BY sl DESC LIMIT 3" mycursor.execute(sql) myresult=mycursor.fetchall() for x in myresult: print(x)执行代码,得到结果为:
二次筛选
有时候我们在进行一次筛选后,还需要设定一个筛选条件进行二次筛选,我们就可以采用“HAVING”语句。例如:我们希望统计在年龄处于20-30(不包括20岁,但是包括30岁)的人当中,选择薪资大于5000的消费者:
#二次过滤 #统计在年龄处于20-30之间的人中,选择薪资大于5000的人 sql = "SELECT * FROM customers WHERE age>20 and age<=30 HAVING sl>5000 " mycursor.execute(sql) myresult=mycursor.fetchall() for x in myresult: print(x) con.commit() con.close()执行代码后,得到的结果如下:
3.5 分组聚合在数据库中,分组常用的语句为“GROUP BY”语句,聚合函数,通常是配合分组进行使用,在数据库中常用的聚合函数为:
COUNT(*):表示计算总行数,括号可以写*和字段名字
MAX(column):表示求此列的最大值
MIN(column):表示求此列的最小值
SUM(column):表示求此列的和
AVG(column):表示求此列的平均值
从customers表中统计出男女薪资总和
以sex为类别进行GROUP BY 分组,加上WHERE来做条件判断。
#统计出男女的薪水总数 sql = "SELECT sex,sum(sl) FROM customers GROUP BY sex" mycursor.execute(sql) myresult=mycursor.fetchall() for x in myresult: print(x)最终结果为:
从customers表中,按性别进行分组,统计出年龄在20-30的消费者的薪资,并且按照薪资高低进行排序
# 按照性别进行分组,统计出年龄在20-30岁的消费者的薪资 sql = "SELECT sex,sum(sl) FROM customers WHERE age>20 and age<=30 GROUP BY sex ORDER BY sl" mycursor.execute(sql) myresult=mycursor.fetchall() for x in myresult: print(x)