暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

(十四)数据库 | SQL案例分析实战

统计美学 2021-10-03
1440

CASE1

盈利分析

某3C产品制造公司业务遍布全球,主营手机、电脑、电视和计算器等产品,下表是该公司销售盈利表sales示例数据,如第一行表示:2000年,该公司在美国销售计算器获得利润共75万元

-- 左右滑动查看完整代码-- 查询每年度销售利润前三的业务信息,要求返回FIELDS: year, country, product, profit和利润排名-- 结果集按年份升序和利润降序排列,若同意年份利润相同,则按国家升序排列

WITH temptable AS   (  SELECT year, country, product, profit,  RANK() OVER(partition by year order by profit desc) AS 'profit_ranking'  FROM sales  )SELECT   * FROM   temptableWHERE   profit_ranking <= 3ORDER BY   year, profit DESC, country;

CASE2

成绩分析

-- 切换数据库并查看sc和course表USE school;SELECT * FROM sc LEFT JOIN course ON sc.cid = course.CId;

-- 查询每门课程的选课人数和成绩情况,要求返回各分段人数所占比例

SELECT sc.CId, course.Cname, COUNT(sc.SId) AS 'Stotal', SUM(IF(score >= 60, 1, 0))/COUNT(sc.SId) AS '[60, 100]',SUM(IF(score >= 60 and score < 70, 1, 0))/COUNT(sc.SId) AS '[60, 70)',SUM(IF(score >= 70 and score < 80, 1, 0))/COUNT(sc.SId) AS '[70, 80)',SUM(IF(score >= 80 and score < 90, 1, 0))/COUNT(sc.SId) AS '[80, 90)',SUM(IF(score >= 90, 1, 0))/COUNT(sc.SId) AS '[90, 100]'FROM   course, scWHERE   sc.CId = course.CIdGROUP BY   sc.CIdORDER BY   Stotal, sc.CId;

-- 查询每门课程得分最高的两名学生的ID,要求返回字段: SId, CId, score和成绩排名-- 结果集按照课程号升序和成绩降序排列

WITH temptable AS (SELECT SId, CId, score, RANK() over(partition by CId order by score DESC) AS 'score_ranking'FROM sc)SELECT   *FROM   temptableWHERE   score_ranking <= 2ORDER BY   CId, score DESC;

CASE3

编程课销售情况分析

-- 切换数据库并查看sale和course表USE jianxingjinke;SELECT * FROM sale LEFT JOIN course ON sale.course_id = course.id;

-- 查询每门课程的销售情况,要求返还FIELDS: 课程名称和销售金额 -- 结果集按照销售金额降序排列

WITH tt AS (SELECT     sale.course_id, name, COUNT(*) * price AS totalFROM    sale        LEFT JOIN    course ON sale.course_id = course.idGROUP BY sale.course_id)SELECT name, totalFROM ttORDER BY total DESC;

扫描二维码获取

更多精彩

统计美学


文章转载自统计美学,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论