小编use*_*990的帖子

在 SQL Server 上为每个类别随机选择 10% 的行

有一张销售产品表。

行号 顾客 产品 售出日期
1 客户_1 东西 2023年1月1日
2 客户_12 何西何西 2023年1月3日
3 客户_1 手表 2023年1月4日
4 客户_4 何西何西 2023年1月6日
... ... ... ...

每一项总是一行。

假设customer_1总共订购了 100 件商品。customer_2总共订购了 50 件商品。customer_3总共订购了 17 件商品。如何为每个客户随机选择 10% 的行?所选行的分数应向上舍入(例如,所选的 2 行总共结果为 12 行)。这意味着至少购买一件商品的每位客户都应该出现在结果表中。在这种情况下customer_1, ,customer_2和的结果表customer_3将有 10 + 5 + 2 = 17 行。

我最初的方法是创建一个临时表,计算每个客户所需的行数,然后循环遍历临时表并为每个客户选择行。然后将它们插入到另一个表中并从该表中进行选择:

drop table if exists #row_counts

select
    customer
    ceiling(convert(decimal(10, 2), count(product)) / 10) as row_count
into #row_counts
from …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

1
推荐指数
1
解决办法
300
查看次数

标签 统计

sql ×1

sql-server ×1

t-sql ×1