• sqlzoo练习系列(九)——群组函数之Nobel表


     【Tips】

    • sqlzoo官网链接:https://sqlzoo.net/wiki/SQL_Tutorial/zh
    • 每个系列开头介绍所用表及其信息
    • 每道题均测试通过,含有题目描述、代码和结果
    • 题目为自己简写,最好在官网查看具体题目
    • 部分测试结果不完整,仅为一部分截图

    群组函数之Nobel表练习链接:https://sqlzoo.net/wiki/The_nobel_table_can_be_used_to_practice_more_SUM_and_COUNT_functions./zh

    所用的表nobel

    • yr:获奖年份
    • subject:获奖类别
    • winner:获奖者

    1.一共颁发了多少个奖

    SELECT COUNT(subject) FROM nobel

    2.列出每一个奖项,只列一次

    SELECT DISTINCT subject
    FROM nobel

    3.找出物理奖的总颁发次数

    SELECT COUNT(subject)
    FROM nobel
    WHERE subject='Physics'      

    4.对每一个奖项,列出其颁发次数

    SELECT subject,COUNT(subject)
    FROM nobel
    GROUP BY subject

    5.对每一个奖项,列出首次颁发的年份

    SELECT subject,MIN(yr)
    FROM nobel
    GROUP BY subject    

    6.对每一个奖项,列出2000年颁发的数目

    SELECT subject,COUNT(subject)
    FROM nobel
    WHERE yr=2000
    GROUP BY subject

    7.对每一个奖项,列出有多少个不同的得奖者

    SELECT subject,COUNT(DISTINCT(winner))
    FROM nobel
    GROUP BY subject

    8.对每一个奖项,列出有多少年曾颁发过

    SELECT subject,COUNT(DISTINCT(yr))
    FROM nobel
    GROUP BY subject

    9.列出哪些年同年有3个物理奖的获得者

    SELECT yr
    FROM nobel
    WHERE subject='Physics'
    GROUP BY yr
    HAVING COUNT(winner)=3

    10.列出谁得奖多于一次

    SELECT winner
    FROM nobel
    GROUP BY winner
    HAVING COUNT(winner)>1

    11.列出谁获得多于一个奖项

    SELECT winner
    FROM nobel
    GROUP BY winner
    HAVING COUNT(DISTINCT(subject))>1
    --奖项去重

    12.哪年哪个奖项,是同一奖项颁发给3个人。只列出2000年及以后的资料

    SELECT yr,subject
    FROM nobel
    WHERE yr>=2000
    GROUP BY yr,subject
    HAVING COUNT(winner)=3

  • 相关阅读:
    求循环小数
    Android中Intent的用法总结
    Java中@Override的作用
    三种继承方式和访问控制方式对子类成员的影响
    设计一个用于人事管理的People(人员)类
    QSort函数对不同类型数据快速排序浅谈
    QSQLITE 使用
    c++控制内存分配
    dll加载过程全局变量会先初始化
    二维数组
  • 原文地址:https://www.cnblogs.com/tuzinn/p/13844927.html
Copyright © 2020-2023  润新知