首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从特定的方法中获取顶部行。使用server 2008的百分比?

如何从特定的方法中获取顶部行。使用server 2008的百分比?
EN

Stack Overflow用户
提问于 2016-11-30 12:43:44
回答 2查看 55关注 0票数 5

我需要接近。每个日期的30 %数据。

代码语言:javascript
运行
复制
id     name   datecol
-----------------------
1       A     2016-11-11
2       B     2016-11-11
3       C     2016-11-11
4       D     2016-11-11
5       E     2016-11-11
6       F     2016-11-11
7       G     2016-11-11
8       H     2016-11-11
9       I     2016-11-11
10      J     2016-11-11
11      A1    2016-11-12
12      B1    2016-11-12
13      C1    2016-11-12
14      D1    2016-11-13
15      E1    2016-11-13
16      F1    2016-11-14
17      G1    2016-11-14
18      H1    2016-11-14
19      I1    2016-11-14
20      J1    2016-11-14

在这种情况下我有

2016年10行-11-11

2016年3排-11-12

2016年2排-11-13

2016年5排-11-14

我需要这样的方法。从每个日期起,最高行数占30 %,

代码语言:javascript
运行
复制
id     name   datecol
-----------------------
1       A     2016-11-11
2       B     2016-11-11
3       C     2016-11-11
11      A1    2016-11-12
14      D1    2016-11-13
16      F1    2016-11-14
17      G1    2016-11-14

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-30 12:59:45

尝试使用编号()获取行号,使用计数()获取每个日期的总计数:

代码语言:javascript
运行
复制
WITH CTE AS 
(
  SELECT T.*,
         ROW_NUMBER() OVER (PARTITION BY datecol ORDER BY Name) as RowNum,
         COUNT(*) OVER (PARTITION BY datecol) as Total
    FROM Table as T
)
SELECT id,name,datecol 
  FROM CTE 
 WHERE RowNum <= CEILING(Total*0.30)

结果:

代码语言:javascript
运行
复制
1   A   2016-11-11
2   B   2016-11-11
3   C   2016-11-11
11  A1  2016-11-12
14  D1  2016-11-13
16  F1  2016-11-14
17  G1  2016-11-14
票数 5
EN

Stack Overflow用户

发布于 2016-11-30 13:00:06

代码语言:javascript
运行
复制
;with cte as (
    Select *
          ,RN=Row_Number() over (Partition By datecol Order By datecol)
    From   YourTable
)
Select A.* 
 From cte A
 Join (Select datecol,cnt=count(*) from YourTable Group By datecol) B
   on A.datecol=B.datecol 
   and A.RN<=ceiling(B.cnt*.3)
 Order by datecol,RN

返回

代码语言:javascript
运行
复制
id  name    datecol     RN
1   A       2016-11-11  1
2   B       2016-11-11  2
3   C       2016-11-11  3
11  A1      2016-11-12  1
14  D1      2016-11-13  1
16  F1      2016-11-14  1
17  G1      2016-11-14  2
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40888707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档