19年数据分析就业能力考察

作者: 大石兄 | 来源:发表于2019-09-15 21:10 被阅读0次

    就业班开办初衷
    课程学习同学进度跟踪(持续更新)
    就业班同学转行成功经验分享
    就业班BI案例介绍

          测试题共分为三部分,sql + python + 动手,不需要全部能做对,目的只是为了检测大家的一个学习能力和基础水平,因为就业班的课程第一部分就是对基础强化,学完之后这些题目都不是问题,需要大家做这些题目的时候有编程的思路知道大概sql可以用什么关联、python 可以用哪些语法或者函数来实现就好,而不是会怕做看都不想看,不然后面项目的探索环节特别容易放弃。做完后把得分情况发给助教(例如:sql:60+python:60+动手:60)能做的题目越多基础越好。

    一、SQL 部分

    数据表
    --1.学生表 Student(SId,Sname,Sage,Ssex)--SId 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别
    --2.课程表 Course(CId,Cname,TId) --CId --课程编号,Cname 课程名称,TId 教师编号
    --3.教师表 Teacher(TId,Tname) --TId 教师编号,Tname 教师姓名
    --4.成绩表 SC(SId,CId,score) --SId 学生编号,CId 课程编号,score 分数
    创建测试数据
    学生表 Student:
    导入数据方法:将以下 mysql 语句,完整复制到 workbench 语句窗口(或者是 mysql 的黑窗口),然后运行即可导入,不需要另外创建表,下面表的操作一样。这些语句第一条是创建表(create table),后面都是插入数据到表中(insert into table )。

    create table Student(SId varchar(10),Sname varchar(10),Sage datetime,Ssex varchar(10));
    insert into Student values('01' , '赵雷' , '1990-01-01' , '男');
    insert into Student values('02' , '钱电' , '1990-12-21' , '男');
    insert into Student values('03' , '孙风' , '1990-05-20' , '男');
    insert into Student values('04' , '李云' , '1990-08-06' , '男');
    insert into Student values('05' , '周梅' , '1991-12-01' , '女');
    insert into Student values('06' , '吴兰' , '1992-03-01' , '女');
    insert into Student values('07' , '郑竹' , '1989-07-01' , '女');
    insert into Student values('09' , '张三' , '2017-12-20' , '女');
    insert into Student values('10' , '李四' , '2017-12-25' , '女');
    insert into Student values('11' , '李四' , '2017-12-30' , '女');
    insert into Student values('12' , '赵六' , '2017-01-01' , '女');
    insert into Student values('13' , '孙七' , '2018-01-01' , '女');
    

    科目表 Course

    create table Course(CId varchar(10),Cname nvarchar(10),TId varchar(10));
    insert into Course values('01' , '语文' , '02');
    insert into Course values('02' , '数学' , '01');
    insert into Course values('03' , '英语' , '03');
    

    教师表 Teacher

    create table Teacher(TId varchar(10),Tname varchar(10));
    insert into Teacher values('01' , '张三');
    insert into Teacher values('02' , '李四');
    insert into Teacher values('03' , '王五');
    

    成绩表 SC

    create table SC(SId varchar(10),CId varchar(10),score decimal(18,1));
    insert into SC values('01' , '01' , 80);
    insert into SC values('01' , '02' , 90);
    insert into SC values('01' , '03' , 99);
    insert into SC values('02' , '01' , 70);
    insert into SC values('02' , '02' , 60);
    insert into SC values('02' , '03' , 80);
    insert into SC values('03' , '01' , 80);
    insert into SC values('03' , '02' , 80);
    insert into SC values('03' , '03' , 80);
    insert into SC values('04' , '01' , 50);
    insert into SC values('04' , '02' , 30);
    insert into SC values('04' , '03' , 20);
    insert into SC values('05' , '01' , 76);
    insert into SC values('05' , '02' , 87);
    insert into SC values('06' , '01' , 31);
    insert into SC values('06' , '03' , 34);
    insert into SC values('07' , '02' , 89);
    insert into SC values('07' , '03' , 98);
    

    练习题目
    1、查询「李」姓老师的数量(5分)
    2、查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数 (10分)
    3、查询同时存在" 01 "课程和" 02 "课程的情况 (5分)
    4、查询存在" 01 "课程但可能不存在" 02 "课程的情况(不存在时显示为 null ) (10分)
    5、查询不存在" 01 "课程但存在" 02 "课程的情况(15分)
    6、查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩(20分)
    7、查询在 SC 表存在成绩的学生信息(15分)
    8、查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(没成绩的显示为 null )(20分)

    二、python 部分

    1、用户从终端输入一个分数,程序输出这个分数所属的考评等级,90到100分是A,60到89是B,60分以下是C。(15分)

    2、有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和(15分)

    3、猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。(20分)

    4、请用面对对象的思想编写一个小游戏,人狗大站,2个角色,人和狗,游戏开始后,生成2个人,3条狗,互相混战,人被狗咬了会掉血,狗被人打了也掉血,狗和人的攻击力,具备的功能都不一样。(25分)

    5、一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?(25分)

    三、动手探索部分

    1、把 user_info_utf.csv 数据导入到自己的 mysql 库中,根据数据文件自己创建 user_info 表。(40分)
    2、python 读取文件 order_info_utf.csv 保存到 mysql 库中(60分)
    资料:链接:https://pan.baidu.com/s/1eKcTQ-qC8Qu2gz7LYXGJNg 提取码:ck9z

    参考答案

    一、SQL部分
    1.查询「李」姓老师的数量

    select
    *
    from teacher
    where tname like '李%';
    

    2.查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数

    select * 
    from sc a 
    left join student d
        on a.sid=d.sid 
    inner join sc b 
        on a.sid=b.sid and a.cid='01' and b.cid='02'
    where a.score>b.score;
    
    1. 查询同时存在" 01 "课程和" 02 "课程的情况
    select * 
    from sc a 
    inner join sc b 
        on a.sid=b.sid and a.cid='01' and b.cid='02';
    

    4.查询存在" 01 "课程但可能不存在" 02 "课程的情况(不存在时显示为 null )

    select * 
    from sc a 
    left join sc b 
        on a.sid=b.sid  and b.cid='02'
    where a.cid='01';
    
    1. 查询不存在" 01 "课程但存在" 02 "课程的情况
    select * 
    from sc a 
    where sid not in(select sid from sc where cid='01')
    and cid='02';
    

    6.查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩

    select 
    a.sid,
    d.sname,
    avg(score) as s_avg
    from sc a
    left join student d
    on a.sid=d.sid
    group by a.sid
    having s_avg>60;
    

    7.查询在 SC 表存在成绩的学生信息

    select 
        b.*
    from sc a
    left join student b
    on a.sid=b.sid
    group by a.sid;
    

    8.查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(没成绩的显示为null)

    select 
    a.sid,
    a.sname,
    count(b.cid) as cons,
    sum(b.score) as cours
    from student a
    left join sc b
    on a.sid=b.sid
    group by a.sid;
    

    二、Python部分
    题目1答案:分数等级划分

    while True:
        score = input('input score:\n')
        if score == 'stop':
            break
    
        score = int(score)
        if score >= 90:
            grade = 'A'
        elif score >= 60:
            grade = 'B'
        else:
            grade = 'C'
    
        print ('{score} belongs to {grade}'.format(score=score,grade=grade))
    while True:
        score = input('input score:\n')
        if score == 'stop':
            break
    
        score = int(score)
        if score >= 90:
            grade = 'A'
        elif score >= 60:
            grade = 'B'
    

    方法2

    while True:
        score = input('input score:\n')
        if score == 'stop':
            break
    
        score = int(score)
        if score >= 90:
            grade = 'A'
    
        if score >= 60 and score<90:
            grade = 'B'
    
        if score < 60:
            grade = 'C'
    
        print ('{score} belongs to {grade}'.format(score=score,grade=grade))
    

    题目2答案:分数求和

    up = 2
    down = 1
    sum = 0
    for i in range(20):
        sum += up/down
        tmp = up
        up = up + down
        down = tmp
    
    print (sum)
    

    题目3答案:猴子吃桃

    total = 1
    for day in range(9,0,-1):
        total = (total+1)*2
    
    print (total)
    

    方法2

    current = 1
    for day in range(9,0,-1):
        yestoday = (current+1)*2
        current = yestoday
    
    print (yestoday)
    

    题目4:人狗大战

    class People():
        agressivity = 10
        life_value = 100
    
        def __init__(self,name):
            self.name = name
    
        def attack(self,dog):
            dog.life_value -= 10
    
        def __str__(self):
            return '人%s剩余生命值:%s,状态值%s'%(self.name,self.life_value,self.agressivity)
    
    
    class Dogs():
        agressivity = 15
        life_value = 80
    
        def __init__(self,name):
            self.name = name
    
        def attack(self,people):
            people.life_value -= 10
    
        def __str__(self):
            return '狗%s剩余生命值:%s,状态值%s'%(self.name,self.life_value,self.agressivity)
    
    p1 = People('Tom')
    p2 = People('Jack')
    d1 = Dogs('niker')
    d2 = Dogs('geeker')
    d3 = Dogs('chaox')
    
    print(p1)
    print(p2)
    
    p1.attack(d1)
    
    print(d1)
    

    题目5:弹小球

    # 初始高度
    height = 100
    # 第一次弹起前的距离,初始化
    highs = height
    # 第2次能弹起来的高度
    height = height / 2
    
    for i in range(2, 11):
        # 第2次弹起来的距离,是弹起高度的来回
        highs += height * 2
        # 准备下一次的高度
        height /= 2
    
    print(height,highs)
    结果:
    0.09765625 299.609375
    

    注意是从第2次弹起来开始计算,因为第一次弹起不具备循环

    相关文章

      网友评论

        本文标题:19年数据分析就业能力考察

        本文链接:https://www.haomeiwen.com/subject/xkptuctx.html