/*团队合作中编写SQL 测试用例的重要性和注意事项

--------------超级大笨狼1,目的:别人可以通过粘贴,就能迅速重现你的测试过程,实现互相检测帮助,知识最大化。2,注意事项,必须包括以下几部分:
0,清晰的问题描述,包括:输入条件 变量类型,输出变量类型。
  1,建表语句 create table  [尽量不要使用正式项目表! 测完就可以删表]
2,插入模拟数据语句  insert  [可以while循环,或逐行insert,或者insert ...select 等各种方式从其他表导入]
3,带注释的测试语句,和察看测试数据语句
4,清理测试表和变量的语句 drop table3,如果有多种写法可以用 datediff(ms,@t1,@t2) 对比速度。
---------------------------------------------------------------------------以下是一个完整的测试用例:
*/
/*问题描述部分:
有个表
id bid name 
1 A    a1
2 A    a2
3 A    a3
4 A    a4
5 B    b1
6 B    b2
7 B    b3
8 B    b4
9 C    c1
10 C    c2
11 C    c3
12 C    c4怎么用sql提取一个表象
id bid name
4 A a4
3 A a3
7 B b3
8 B b4
12 C c4
11 C c3
就是提取每个bid出现次数的前两个
输入条件:一个表tb
输出条件:查询结果表*/
--创建输入表
CREATE TABLE [tb] 
(
[id] [int] IDENTITY (1, 1) NOT NULL ,
[bid] [varchar] (20) NULL ,
[name] [varchar] (20) NULL 

--创建测试数据
insert tb select 'A','a1' 
union all select 'A','a2' 
union all select 'A','a3' 
union all select 'A','a4' 
union all select 'B','b1' 
union all select 'B','b2' 
union all select 'B','b3' 
union all select 'B','b4' 
union all select 'C','c1' 
union all select 'C','c2' 
union all select 'C','c3'
union all select 'C','c4'
--察看测试数据
select * from tb---语句执行前记一下时间  
declare   @t1   datetime,   @t2   datetime   
    set   @t1   =getdate()   
 
  --查询语句的一种写法。 select * 
from tb as t1
where id in(
select top 2 id 
from tb as t2
where t1.bid=t2.bid
order by id desc)
order by bid, id desc--语句执行后记一下时间  set   @t2   =getdate()   
  select     datediff(ms,@t1,@t2   )   
 
--删除测试--drop table tb