回 帖 发 新 帖 刷新版面

主题:谁帮我做做2道SQL题  急!  谢谢了

第一道:
表结构如下:
id  name sex
1   张三  男   
2   张三  男
3   张三  男
4   李四  女
5   李四  女
6   王五  男
用一条SQL语句去掉NAME列,但是必须要完全显示字段
显示结果如下:
id  name sex
1   张三  男   
4   李四  女
6   王五  男



第2题:(实现相同的记录交替)
id  name sex
1   张三  男   
2   张三  男
3   张三  男
4   李四  女
5   李四  女
6   李四  女
7   王五  男
8   王五  男
9   王五  男

用一个SQL语句实现:
id  name sex
1   张三  男   
4   李四  女
7   王五  男
2   张三  男
5   李四  女
8   王五  男
3   张三  男
6   李四  女
9   王五  男

我不会做这2道踢  肯求大家帮帮我  在这先谢谢大家了

回复列表 (共4个回复)

沙发

第一题:
select min(id),name,sex
from t1
group by name,sex

第二题:
select t.id,t.name,t.sex
from (select id,name,sex,
rank() over (order by id partition by name) as rank) t
order by t.rank

板凳

非常感谢你的回帖  真的谢谢了  但是我看不懂第2个答案  RANK()是做什么用 ??能不能教教我啊  真心感谢您

3 楼

那是oracle中的一个函数

4 楼


第1 题
     select  min(id)as id,name,sex  
     from #c
     group by name,sex
     order by id
第二题
  select d.id,d.name,d.sex
  from (select id,name,sex,rank()over( partition by name order by id )  
                                       as rank from #c) d
     order by  rank,d.id

我来回复

您尚未登录,请登录后再回复。点此登录或注册