CREATE TABLE `sys_online` (   
  `uid` int(11) NOT NULL,   
  `lastupdate` int(11) NOT NULL DEFAULT '0',   
  `onlinetime` int(11) NOT NULL DEFAULT '0',   
  `online` int(11) DEFAULT '0' COMMENT '鏈€杩戜竴娆′笂绾挎椂闂?,   
  `day` int(11) DEFAULT '0' COMMENT '浠婂ぉ',   
  `daytime` int(11) DEFAULT '0' COMMENT '褰撳ぉ绱Н鏃堕棿',   
  `logincount` int(11) DEFAULT NULL,   
  PRIMARY KEY (`uid`),   
  KEY `lastupdate` (`lastupdate`) USING BTREE   
  ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='鍦ㄧ嚎鎯呭喌'     将表结构中的内容转换为不同时间段内的注册人数:即显示为:  1分钟内/1-3分钟/3-5分钟/5-10分钟/10-15分钟/15-30分钟/30-60分钟/1-2小时/2-3小时/3小时以上/日期  其中onlinetime为在线时长,如何写SQL,谢谢!
   

解决方案 »

  1.   

    case when then else end
      

  2.   

    create table tb(姓名 varchar(10) , 课程 varchar(10) , 分数 int)
    insert into tb values('张三' , '语文' , 74)
    insert into tb values('张三' , '数学' , 83)
    insert into tb values('张三' , '物理' , 93)
    insert into tb values('李四' , '语文' , 74)
    insert into tb values('李四' , '数学' , 84)
    insert into tb values('李四' , '物理' , 94)  select b.姓名,(select 分数 from tb as a where a.姓名=b.姓名 and a.课程='语文') as 语文,
     (select 分数 from tb as a where a.姓名=b.姓名 and a.课程='数学') as 数学,
     (select 分数 from tb as a where a.姓名=b.姓名 and a.课程='物理') as 物理,
      sum(b.分数) as 总分
      from tb as b group by b.姓名 order by 总分 desc  好像还可以用 case when 简化代码....但我不太会用..