zoukankan      html  css  js  c++  java
  • SQL 笔试题集锦

    1.一道SQL语句面试题,关于group by表内容:

    info 表

    date result

    2005-05-09 win

    2005-05-09 lose

    2005-05-09 lose

    2005-05-09 lose

    2005-05-10 win

    2005-05-10 lose

    2005-05-10 lose

    如果要生成下列结果, 该如何写sql语句?

                  win lose

    2005-05-09 2 2

    2005-05-10 1 2

    答案:

    (1) select date, sum(case when result = "win" then 1 else 0 end) as "win", sum(case when result = "lose" then 1 else 0 end) as "lose" from info group by date;

    (2) select a.date, a.result as win, b.result as lose

      from

      (select date, count(result) as result from info where result = "win" group by date) as a

      join

      (select date, count(result) as result from info where result = "lose" group by date) as b

      on a.date = b.date;

    2.表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列

    select (case when a > b then a else b end), (case when b > c then b else c end) from table;

    3.请取出tb_send表中日期(SendTime字段)为当天的所有记录? (SendTime字段为datetime型,包含日期与时间)

    ------------------------------------------

    select * from tb where datediff(dd,SendTime,getdate())=0

    4.有一张表,里面有3个字段:chinese,math,english。其中有一条记录chinese 70分,math 80分,english 58分,请用一条sql语句查询出所有记录并按以下条件显示出来(并写出您的思路): 

       大于或等于80表示excellent,大于或等于60表示pass,小于60分表示fail。 

           显示格式: 以上面的chinese 70分,math 80分,english 58分

           chinese              math                english 

           pass                  excellent           fail

    select (case when chinese >= 80 then "excellent" when chinese >= 60 then "pass" else "fail" end) as chinese,

      (case when math >= 80 then "excellent" when math >= 60 then "pass" else "fail" end) as math,

      (case when english >= 80 then "excellent" when english >= 60 then "pass" else "fail" end) as english

      from grade;

    5.请用一个sql语句得出结果

    从table1,table2中取出如table3所列格式数据,注意提供的数据及结果不准确,只是作为一个格式向大家请教。

    如使用存储过程也可以。

    table1

    月份mon 部门dep 业绩yj

    -------------------------------

    一月份      01      10

    一月份      02      10

    一月份      03      5

    二月份      02      8

    二月份      04      9

    三月份      03      8

    table2

    部门dep      部门名称dname

    --------------------------------

          01      国内业务一部

          02      国内业务二部

          03      国内业务三部

          04      国际业务部

    table3 (result)

    部门dep 一月份      二月份      三月份

    --------------------------------------

          01      10        null      null

          02      10         8        null

          03      null       5        8

          04      null      null      9

    ------------------------------------------

    select t1.dep,

    sum(case when mon = 1 then yj else 0 end) as jun,

    sum(case when mon = 2 then yj else 0 end) as feb,

    sum(case when mon = 3 then yj else 0 end) as mar

    from

    t1 right join t2 on t1.dep = t2.dep

    group by t1.dep;

  • 相关阅读:
    Redis 常用操作
    Redis持久化功能
    Redis 和 memcache 简单比较
    你不知道的 JavaScript 系列中( 1 ) - 内置类型
    你不知道的 JavaScript 系列上( 57 ) - 类和委托思维模型的区别
    你不知道的 JavaScript 系列上( 56) - 委托行为
    你不知道的 JavaScript 系列上( 55) - Object.create()
    你不知道的 JavaScript 系列上( 54) - 检查 [[Prototype]]
    你不知道的 JavaScript 系列上( 53 ) - 原型继承
    你不知道的 JavaScript 系列上( 52 ) - .constructor
  • 原文地址:https://www.cnblogs.com/zemliu/p/2717629.html
Copyright © 2011-2022 走看看