gpt4 book ai didi

sql - 如何根据列值选择不同百分比的数据?

转载 作者:行者123 更新时间:2023-11-29 13:33:36 25 4
gpt4 key购买 nike

我需要查询一个包含“性别”列的表,如下所示:

| id | gender | name    |-------------------------| 1  | M      | Michael |-------------------------| 2  | F      | Hanna   |-------------------------| 3  | M      | Louie   |-------------------------

我需要提取前 N 个结果,例如 80% 的男性和 20% 的女性。因此,如果我需要 1000 个结果,我会想要检索 800 个男性和 200 个女性。

  1. 是否可以在单个查询中完成?怎么办?

  2. 如果我没有足够的记录(假设我在上面的例子中只有 700 名男性)是否可以自动选择 700/300?

最佳答案

基本上,您希望获得尽可能多的“M”,但不要超过您的百分比,然后获得足够的“F”,这样您就有了 1000 行:

with cte_m as (
select * from Table1 where gender = 'M' limit (1000 * 0.8)
), cte as (
select *, 0 as ord from cte_m
union all
select *, 1 as ord from Table1 where gender = 'F'
order by ord
limit 1000
)
select id, gender, name
from cte

sql fiddle demo

关于sql - 如何根据列值选择不同百分比的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18325251/

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