weixin_68219412 2024-02-25 23:19 采纳率: 25%
浏览 8

MYSQL这种题怎么编写

数据来源:根据题目所用表格导入自建,说明所用数据库(限定使用MYSQL/ORACLE/SQLSERVER) 查询每个公司岗位类别为‘一般管理’的人员中,各个学历的占比,结果输出,公司、学历、占比 得分点(完成得满分,未完成得0分)

img

  • 写回答

3条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-02-25 23:20
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如需一对一服务私聊我哦
    分析: 本题需要从数据库中查询出每个公司岗位类别为‘一般管理’的人员,并统计各个学历的占比。可以使用SQL语句完成查询和统计。 具体思路如下:
    1. 使用SELECT语句从数据库中查询出所有岗位类别为‘一般管理’的人员的公司和学历信息。
    2. 使用GROUP BY语句按照公司和学历进行分组,并计算每个组内的人员数量。
    3. 使用SUM()函数统计每个学历在每个公司的总人数。
    4. 计算每个学历在每个公司的占比。
    5. 输出公司、学历、占比的统计结果。 参考SQL语句: SELECT company, education, COUNT() AS num, ROUND(COUNT() / SUM(COUNT(*)) OVER (PARTITION BY company) * 100, 2) AS percentage FROM employee WHERE position_category = '一般管理' GROUP BY company, education 注释:
    6. employee为员工信息表名,包含公司、学历、岗位类别等字段。
    7. COUNT(*) AS num用于统计每个组内的人员数量。
    8. ROUND()函数用于保留小数点后两位,计算占比时将计算结果乘以100。
    9. SUM(COUNT(*)) OVER (PARTITION BY company)用于计算每个公司的总人数。
    10. WHERE语句用于筛选岗位类别为‘一般管理’的人员。 案例: 假设有一张员工信息表employee,包含以下字段:id、name、company、position_category、education。 其中,id为员工编号,name为员工姓名,company为公司名,position_category为岗位类别,education为学历。现在需要查询每个公司岗位类别为‘一般管理’的人员中,各个学历的占比。 以下是SQL语句和查询结果: SQL语句: SELECT company, education, COUNT() AS num, ROUND(COUNT() / SUM(COUNT()) OVER (PARTITION BY company) * 100, 2) AS percentage FROM employee WHERE position_category = '一般管理' GROUP BY company, education 查询结果: | company | education | num | percentage | | --------- | --------- | --- | ----------| | 公司A | 本科 | 20 | 40.82 | | 公司A | 硕士 | 10 | 20.41 | | 公司A | 博士 | 5 | 10.20 | | 公司A | 专科 | 15 | 30.61 | | 公司B | 本科 | 30 | 50.00 | | 公司B | 硕士 | 10 | 16.67 | | 公司B | 博士 | 5 | 8.33 | | 公司B | 专科 | 15 | 25.00 | 代码实现: 以下为使用Python语言连接MySQL数据库,并执行上述SQL语句进行查询的例子: import mysql.connector cnx = mysql.connector.connect(user='username', password='password', host='127.0.0.1', database='database_name') cursor = cnx.cursor() query = ("SELECT company, education, COUNT() AS num, " "ROUND(COUNT() / SUM(COUNT()) OVER (PARTITION BY position_category) * 100, 2) AS percentage " "FROM employee " "WHERE position_category = '一般管理' " "GROUP BY company, education") cursor.execute(query) for (company, education, num, percentage) in cursor: print("{} - {} - {} - {}".format(company, education, num, percentage)) cursor.close() cnx.close() 注释:
    11. 使用mysql.connector模块连接MySQL数据库。
    12. 定义查询语句,使用占位符来减少SQL注入的风险。
    13. 使用cursor.execute()方法执行查询。
    14. 使用for循环遍历查询结果,并输出每个组的统计信息。
    15. 关闭cursor和连接。
    评论

报告相同问题?

问题事件

  • 创建了问题 2月25日

悬赏问题

  • ¥66 换电脑后应用程序报错
  • ¥50 array数据同步问题
  • ¥15 pic16F877a单片机的外部触发中断程序仿真失效
  • ¥15 Matlab插值拟合差分微分规划图论
  • ¥15 keil5 target not created
  • ¥15 C/C++数据与算法请教
  • ¥15 怎么找志同道合的伙伴
  • ¥20 如何让程序ab.eXe自已删除干净硬盘里的本文件自己的ab.eXe文件
  • ¥50 爬虫预算充足,跪巨佬
  • ¥15 滑块验证码拖动问题悬赏