一,基础数据集可以参考这里:
同时用SQL和python实现【SQL经典50题--01查询课程编号为“01”的课程比“02”的课程成绩高的所有学生的学号】-CSDN博客
二,SQL 实现:查询平均成绩大于60分的学生的学号和平均成绩
这题比较简单,用AVG,GROUP BY,HAVING就可以实现。
所以就不列出处理思路了。
完整的SQL语句
SELECT AVG(成绩) AS 平均成绩,学号
FROM score
GROUP BY 学号
HAVING AVG(成绩) > 60;
三,python实现:查询平均成绩大于60分的学生的学号和平均成绩
import pandas as pd
import pymysql
#1.连接数据库
conn = pymysql.connect(host='localhost', user='root', passwd='root', db='new_students', port=3306, charset='utf8')
cursor = conn.cursor()
#2.读取数据
sql_score = "select * from score"
df_score = pd.read_sql(sql_score,conn)
df_score["学号"] = [ str(x) for x in df_score["学号"] ]
print(df_score)
print("-"*100)
#3.先按照成绩GROUPBY
df_gr_score = df_score.groupby("学号",as_index = False)["成绩"].mean()
print(df_gr_score)
print("-"*100)
#4.筛选出成绩大于60的。
df_final = df_gr_score[df_gr_score["成绩"] > 60]
print("筛选出成绩大于60的:")
print(df_final)