datawhale9月组队学习task06 SQL秋招题

Posted 临风而眠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了datawhale9月组队学习task06 SQL秋招题相关的知识,希望对你有一定的参考价值。

datawhale9月组队学习task06 秋招题

太忙了,就挑一些题目做做了,

呜呜呜

秋招秘籍A

补充学习:在datagrip中CREATE DATABASE等

  • 如图

  • 下一步

    貌似在mysql中database和schema差不多

    参考👉:数据库中Schema和Database有什么区别

  • 点击OK

    创建成功

  • 去终端里看看

  • 耶!

  • 在里面创建表也很方便!

    • continue:

      此时还不能执行

    • 添加列,还有智能提示,666!

      上面那个也不知道到底int还是integer

    • 点击执行

练习一:各部门工资最高的员工

  • 题目

  • 解题

子任务1

哈哈第一个表用datagrip操作了一部分(写在上面)…耍赖了属于是

  • 去W3C上复习下INSERT INTO

  • 哎呀,设置Name的时候,长度上限只设置了1,还不如改成VCHAR…

    修改一下:

    对了,这里也别忘use当前要用的database

INSERT  INTO employee VALUES (1,"JOE",70000,1),
                             (2,"Henry",80000,2),
                             (3,"Sam",60000,2),
                             (4,"Max",90000,1);

好耶!

子任务2

  • 复习下create table先

  • 创建表

    CREATE TABLE department
    (Id int NOT NULL ,
    NAME VARCHAR(10));
    
  • 插入数据

    INSERT INTO department VALUES (1,"IT"),
                                  (2,"Sales");
    
  • 好耶

子任务3

  • 呜呜感觉有点难,去参考别人写的

    SELECT
        Dep.Name AS Department,
        Emp.NAME AS Employee,
        Emp.Salary AS Salary
    FROM
        Employee AS Emp
    INNER JOIN
        Department AS Dep
    ON Emp.DepartmentId=Dep.Id
    WHERE Emp.Salary IN (
        SELECT
            MAX(Salary)
        FROM
            Employee AS E
        WHERE
            E.DepartmentId=Emp.DepartmentId
        )
    

练习九:平面上最近距离

  • 题目

  • 解题

    • 先建表

      CREATE TABLE point
      (x int NOT NULL ,
      y int NOT NULL );
      
    • 插入数据

      INSERT INTO point VALUES(-1,-1),
                               (0,0),
                               (-1,-2);
      
    • SELECT MIN(ROUND(SQRT((POW(p1.x-p2.x,2)+POW(p1.y-p2.y,2))),2)) AS shortest
      FROM point as p1,
           point as p2
      WHERE p1.x >p2.x OR p1.y>p2.y;
      

秋招秘籍B

练习三:带货主播

  • 题目

  • 解题

    • 建表插数据,一套带走

      CREATE TABLE anchor_sales(anchor_name VARCHAR(10),
                                date INT,
                                sales INT);
      INSERT INTO anchor_sales VALUES ('A',20210101,40000),
                                      ('B',20210101,80000),
                                      ('C',20210102,10000),
                                      ('C',20210102,90000),
                                      ('A',20210103,7500),
                                      ('C',20210103,80000);
      

    • 解决问题

      • a

        SELECT COUNT(date) as date_num
        
        FROM(SELECT anchor_name,
                    date,
                    sales,
                    SUM(sales) OVER(PARTITION BY date ORDER BY date) AS sales_sum
            FROM anchor_sales) AS a
            WHERE (sales/sales_sum)>=0.9;
        

      • b

        SELECT COUNT(anchor_name) as anchor_num
        FROM
        (SELECT  DISTINCT anchor_name
        FROM(SELECT anchor_name,
                    date,
                    sales,
                    SUM(sales) OVER(PARTITION BY date
                            ORDER BY date)AS sales_sum
            FROM anchor_sales) AS a
            WHERE  (sales/sales_sum)>=0.9) AS b;
        

组队学习收获和感受

​ 近期正好有学习SQL语言的需求,然后看到datawhale正好在9月推出了这个教程,如获至宝

​ 但没想到,大二刚开学,就忙爆了…(其实很多事情是自己找的)

​ 顶着多重压力坚持参加组队学习,太忙的时候就只能选择性学习了

​ 感觉以后组队学习的教程可以有个思维导图吖!那样子应该会更清晰更棒!

以上是关于datawhale9月组队学习task06 SQL秋招题的主要内容,如果未能解决你的问题,请参考以下文章

datawhale9月组队学习task02基础查询与排序

datawhale9月组队学习task01环境搭建,初始数据库

datawhale9月组队学习task03复杂查询

datawhale9月组队学习task04集合运算

Datawhale7月组队学习task3数据重构

Datawhale7月组队学习task5模型建立和评估