2014-01-23 25 views
0

我想根据特定人员的最小记录数(N)从单个表中选择记录。例如,如果N = 2,则按最少记录数(COUNT)匹配条件筛选

Name Time 
John 09:00:00 
Sam 09:05:00 
Sally 09:06:00 
John 09:10:00 
Jane 09:15:00 
Joe 09:16:00 
Sally 09:22:00 

过滤下来

Name Time 
John 09:00:00 
Sally 09:06:00 
John 09:10:00 
Sally 09:22:00 

这是很容易算的记录,但我该如何选择呢?

回答

0

按功能分组使用。

select count(*),Name from table_name group by Name 
0

试试这个:

select * 
from mytable 
where name in (
    select name 
    from mytable 
    group by name 
    having count(1) =2 
) 
0

你会第一组的记录通过的次数发生特定的人:

select count(1), name 
from Person 
group by name; 

接下来,你要选择那些发生人两次或多次:

select name, time 
from Person 
where id in (
     select id from Person group by name having count(1) >= 2 
) 

请注意,我假设您的Person表具有一个id列,它唯一标识每列。

因此,基本上,您首先选择出现两次或多次的人的id,然后为这些人选择所需的数据。