(1)表名:购物信息
购物人      商品名称     数量
A            甲          2
B            乙          4
C            丙          1
A            丁          2
B            丙          5
……
查询出购物人购买了两种或两种以上物品 的购物信息
效果如下:
        购物人      商品名称     数量
        A            甲          2
        A            丁          2
        B            乙          4
        B            丙          5
        ....(2)表名:成绩表
姓名   课程       分数
张三     语文       81
张三     数学       75
李四     语文       56
李四     数学       90
王五     语文       81
王五     数学       100
王五     英语       49
……查询出成绩全部合格的学生信息(包含姓名、课程、分数),注:分数在60以上评为合格
(3)成绩表
学生id        课程id     课程分数
1                1           5
1                2           6
2                1           4
2                2           3
3                1           4
3                2           5 
.....
查询出 课程 1  比课程 2 分数高的所有学生的学号(4) 赛事表  tmp
    rq(日期)         sf(胜负)      
   2005-05-09          胜
   2005-05-09          负
   2005-05-09          胜
   2005-05-09          负
   2005-05-09          负
   2005-05-10          胜
   2005-05-10          胜
   2005-05-10          负要求 , 查询出每天的胜负情况 , 结果如下:
     rq(日期)          胜       负
   2005-05-09          2        3
   2005-05-10          2        1
 

解决方案 »

  1.   

    试下能做对几个·
    (4)
    select rq,
           sum( case when sf='胜' then 1 else 0 end ) as '胜',
           sum( case when sf='负' then 1 else 0 end ) as '负'
    from tmp
    group by rq(3)
    select 学生id from 成绩表 a where 学生id in(select 学生id from 成绩表 b where b.课程id>a.课程id and b.课程分数>a.b.课程分数 group by 学生id)
      

  2.   

    (2)
    第二题,学生ID都没有一个重名怎么算?
    咱假设它名字就先当于ID·要不没法做了·
    select * from 成绩表 t where 姓名 not in(select 姓名 from  成绩表 where 分数<60)
      

  3.   

    (1)
    select distint(商品名称),sum(数量) from tb where exists(select 购物人,商品名称 from tb where 数量>0 group by  购物人,商品名称 having count(购物人)>1 ) group by 商品名称
      

  4.   

    1、
    select 购物人,商品名称,数量 from 购物信息 where 购物人 in (
    select 购物人 from 购物信息 group by 购物人 having count(购物人) > 1
    )
    order by 购物人,商品名称 desc2、
    select * from 成绩表 where 姓名 not in (
    select 姓名 from 成绩表 where 分数 < 60
    )写前两个吧。
    表名,字段名千万别用中文了,太不方便。
      

  5.   

    第三题:select * from 成绩表 a inner join 成绩表 b on a.id=b.id and a.课程id<b.课程id and a.课程分数>b.课程分数