SQL SELECT基于列值的行百分比

时间:2019-06-04 17:08:25

标签: sql sql-server

我希望根据列值返回15%的行。例如,我有一个公民身份列和性别列以及姓名电子邮件等。我想在这些列中返回每种方案的15%。如果公民身份=美国,我希望与美国和男性的总行数分别为15%,美国和美国的15%,女性和15%的美国行,且未知。我的成绩(即中国人,加拿大人等)也将适用于其他公民

我能够获得所有行的15%,但不是基于列值。

一个非常精简的查询看起来像这样。

SELECT TOP 15 PERCENT FROM (
SELECT name
    , email
    , citizenship
    , gender
FROM bio) a

1 个答案:

答案 0 :(得分:1)

您需要分层的样本。您可以使用:

select top 15 percent b.*
from bio b
order by row_number() over (partition by citizenship, gender order by (select null));