gpt4 book ai didi

sql - 如何从特定的大约中获取顶行。使用 sql server 2008 的百分比?

转载 作者:行者123 更新时间:2023-12-02 23:14:55 24 4
gpt4 key购买 nike

我需要大约。每个日期的 30% 数据。

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

In this case i have

2016-11-11共10行
2016-11-12共3行
2016-11-13共2行
2016-11-14共5行

i need like this by approx. 30 percentage of top rows from each date,

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

提前致谢。

最佳答案

使用 ROW_NUMBER() 尝试此查询获取行号和 COUNT() OVER ()获取每个日期的总计数:

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)

结果:

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

关于sql - 如何从特定的大约中获取顶行。使用 sql server 2008 的百分比?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40888707/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com