前些天,遇到两个问题,还没有搞清楚,望大家指点一二。1)表结构如下:
   姓名   科目   分数
   张三   语文   80
   张三   数学   90
   张三   英语   60
   李四   语文   60
   李四   数学   69
   李四   英语   78现通过一个SELECT语句,查询出来后,如下,           语文  数学  英语
    张三   80   90    60
    李四   60   69    78
2)有一个网站,现要记录访问量及频率等问题,现有一张表,有两个字段,TIME,IP,
TIME字段用来记录访问时间,IP字段用来记录所访问者的IP地址,
现时间以0~23分化为24个区域,要通过一个SQL语句来记录每个区域的访问量。
请问,这两个SQL语句各应如何,谢谢。

解决方案 »

  1.   

    1
    select 姓名 ,sum(decode(科目,'语文',分数,0)),sum(decode(科目,'数学',分数,0)),sum(decode(科目,'英语',分数,0))
     from table group by 姓名
      

  2.   


    select time ,count(ip) from table group by time
      

  3.   

    1.
    select 姓名,
    max(case when 科目="语文" then 分数 else 0) 语文,
    max(case when 科目="数学" then 分数 else 0) 数学,
    max(case when 科目="英语" then 分数 else 0) 英语
    from 成绩表;2.
    select trunc(time,'hh') time,count(ip) from table group by time;没有测试,下次记得发建表语句
      

  4.   

    第一个答案少写了个
    group by 姓名
      

  5.   

    第一个问题应该已经解决了,但是感觉加上SUM或MAX是否有欠妥,对于第二个问题,zh282841435 回答的已经有点感觉了,但是我运行了下,trunc(time,'hh')得不到以小时为单位的,我的时间是设个样子的,字段time(timestamp)  ‘2008-02-03 15.23.36’,等等
    以小时为单位,划分成0~23共24个区域。