你所在位置:首页Sql资源 → 应用实例之按照出现率显示数据

应用实例之按照出现率显示数据

发布时间:2019-06-12


应用实例之按照出现率显示数据

 

--数据

/*  www.350job.com  

序号          名称   分类          出现率

----------- ---- ----------- ---------------------------------------

1           aa   1           0.5

2           bb   1           0.5

3           cc   2           0.3

4           dd   2           0.6

5           ff   2           0.1

*/

--要求说明:

--例如上表中数据按照分类,分为两组1和2。

--分别得到每个分类的一条数据,让数据出现的概率和字段中的出现率相符。

 

[sql]

declare @T table   

(序号 int,名称 varchar(2),分类 int,出现率 numeric(2,1))  

insert into @T  

select 1,'aa',1,0.5 union all  

select 2,'bb',1,0.5 union all  

select 3,'cc',2,0.3 union all  

select 4,'dd',2,0.6 union all  

select 5,'ff',2,0.1  

    www.350job.com  

;with maco as  

(  

    select a.* from @T a  

    right join master..spt_values b on 1=1  

    where type='p'and a.出现率*10>b.number  

)  

  

select   

    分类,(select top 1 名称 from maco where 分类=t.分类   

    order by newid()) as 名称   

from maco t group by 分类  

    www.350job.com  

/*  

分类          名称  

----------- ----  

1           bb  

2           dd  

*/  

 

示例来源:

https://social.microsoft.com/Forums/zh-CN/sqlserverzhchs/thread/33f20f9a-9750-409f-a1cc-99111dcbb5ff

 

 

作者 叶子


上一篇:使用Filtered Indexes提高查询性能
下一篇:mssql方便的函数使用与游标使用练习