问候所有国家的SQL人员。
简单的问题,希望是一个简单的答案。
我有一个包含人员信息的Oracle数据库表。列是:
FirstName, LastName, BirthDate, BirthCountry
让我们说在这张桌子上我有1500人出生在阿鲁巴(BirthCountry =“Aruba”),678 Botswanans(BirthCountry =“Botswana”),13338加拿大人(BirthCountry =“Canadia”)。
我需要写什么查询从每个国家/地区提取10个样本的样本?无论哪个10,只要有10个就没关系。
这一个查询将从每个BirthCountry输出30行,10行。
答案 0 :(得分:4)
这将从每个国家/地区中选出10个最年轻的人:
SELECT *
FROM (
SELECT p.*,
ROW_NUMBER() OVER (PARTITION BY birthCountry ORDER BY birthDate DESC) rn
FROM persons p
)
WHERE rn <= 10
答案 1 :(得分: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