我希望根据列值返回15%的行。例如,我有一个公民身份列和性别列以及姓名电子邮件等。我想在这些列中返回每种方案的15%。如果公民身份=美国,我希望与美国和男性的总行数分别为15%,美国和美国的15%,女性和15%的美国行,且未知。我的成绩(即中国人,加拿大人等)也将适用于其他公民
我能够获得所有行的15%,但不是基于列值。
一个非常精简的查询看起来像这样。
SELECT TOP 15 PERCENT FROM (
SELECT name
, email
, citizenship
, gender
FROM bio) a
答案 0 :(得分:1)
您需要分层的样本。您可以使用:
select top 15 percent b.*
from bio b
order by row_number() over (partition by citizenship, gender order by (select null));