zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    RDay2-Problem 2 B
    杭电 1862 EXCEL排序(sort+结构体)
    杭电 2803 The MAX(sort)
    杭电 5053 the Sum of Cube(求区间内的立方和)打表法
    杭电 2089 不要62
    杭电 4548 美素数(素数打表)
    杭电2098 分拆素数和
    杭电1722 Cake (分蛋糕)
    素数判定 (素数打表)
    最小公倍数
  • 原文地址:https://www.cnblogs.com/tuzinn/p/13844927.html
Copyright © 2011-2022 走看看