1

问候所有国家的 SQL 人。

简单的问题,希望是一个简单的答案。

我有一个包含人员信息的 Oracle 数据库表。列是:

FirstName, LastName, BirthDate, BirthCountry

假设在这张表中,我有 1500 人出生在阿鲁巴(出生国 = “阿鲁巴”),678 名博茨瓦纳人(出生国 = “博茨瓦纳”),13338 名加拿大人(出生国 = “加拿大”)。

我需要编写什么查询来从每个国家/地区提取 10 条记录的样本批次?哪10个没关系,只要有10个就行。

这个查询将输出 30 行,每个 BirthCountry 有 10 行。

4

2 回答 2

4

这将从每个国家/地区选出 10 名最年轻的人:

SELECT  *
FROM    (
        SELECT  p.*,
                ROW_NUMBER() OVER (PARTITION BY birthCountry ORDER BY birthDate DESC) rn
        FROM    persons p
        )
WHERE   rn <= 10
于 2013-05-06T13:27:25.667 回答
1

这将随机选择十个人,每次运行查询时都会选择不同的人:

select  *
from    (
        select  row_number() over (partition by BirthCountry 
                                   order by dbms_random.value) as rn
        ,       FirstName
        ,       LastName
        ,       BirthDate
        ,       BirthCountry
        from    YourTable
        )
where   rn <= 10
于 2013-05-06T13:32:04.403 回答