📜  Python MySQL – GROUP BY 和 HAVING 子句(1)

📅  最后修改于: 2023-12-03 14:46:00.653000             🧑  作者: Mango

Python MySQL – GROUP BY 和 HAVING 子句

在 MySQL 数据库中,GROUP BY 和 HAVING 子句常常用来对数据进行分组和筛选。Python 作为一种广泛使用的编程语言,也提供了 MySQL 数据库的连接和操作功能。本文将介绍 Python 中如何使用 GROUP BY 和 HAVING 子句来对 MySQL 数据库进行分组和筛选操作。

连接 MySQL 数据库

首先,我们需要使用 Python 中的 mysql-connector 模块来连接 MySQL 数据库。示例代码如下:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="username",
  password="password",
  database="mydatabase"
)

mycursor = mydb.cursor()

在连接 MySQL 数据库完成后,可以通过 cursor 对象来执行 SQL 语句。

GROUP BY 子句

GROUP BY 子句用来对数据库中的数据进行分组,通常结合聚合函数使用。示例代码如下:

sql = "SELECT COUNT(*) AS count, city FROM customers GROUP BY city"
mycursor.execute(sql)
result = mycursor.fetchall()
for row in result:
  print(row)

以上代码会输出每个城市对应的顾客数量。COUNT(*) 为聚合函数,city 为分组依据。注意,如果 SELECT 语句中使用了聚合函数,则必须将其他列也加入 GROUP BY 子句中。

HAVING 子句

HAVING 子句用来对 GROUP BY 分组后的结果进行筛选。示例代码如下:

sql = "SELECT COUNT(*) as count, city FROM customers GROUP BY city HAVING count > 2"
mycursor.execute(sql)
result = mycursor.fetchall()
for row in result:
  print(row)

以上代码会输出顾客数量大于 2 的城市名称和对应的顾客数量。HAVING count > 2 表示筛选出数量大于 2 的城市。

完整代码
import mysql.connector

mydb = mysql.connector.connect(
    host="localhost",
    user="username",
    password="password",
    database="mydatabase"
)

mycursor = mydb.cursor()

# GROUP BY 子句示例
sql1 = "SELECT COUNT(*) AS count, city FROM customers GROUP BY city"
mycursor.execute(sql1)
result1 = mycursor.fetchall()
for row in result1:
    print(row)

# HAVING 子句示例
sql2 = "SELECT COUNT(*) as count, city FROM customers GROUP BY city HAVING count > 2"
mycursor.execute(sql2)
result2 = mycursor.fetchall()
for row in result2:
    print(row)

注意,以上示例代码仅供参考,具体的 SQL 语句和表结构需要根据实际情况进行修改。