我的表格person_log
包含以下字段:
id
timestamp
first_name
last_name
action
带有一些示例数据
1;012545878;homer;simpson;eating
2;812345222;homer;simpson;watching tv
3;312322578;marge;simpson;cooking
4;114568568;bart;simpson;skating
5;015345345;bart;simpson;skating
现在,我需要选择first_name
和last_name
相同且至少出现两次但action
不同的所有记录集。
导致选择id
s 1和2。
我该怎么做? TIA?
答案 0 :(得分:1)
使用派生表来获取具有至少2个不同操作的人,并将其连接到原始表以获取结果中的其他列。
iframeOnload
答案 1 :(得分:1)
您可以按照您想要的字段进行分组,然后将数字大于或等于2作为要加入主person_log表的表格。
SELECT * FROM person_log p
JOIN (
SELECT first_name, last_name, action
group by first_name,last_name
having count(*) >=2 ) p2
on p.first_name=p2.first_name and p.last_name=p2.last_name
答案 2 :(得分:0)
你可以使用row_number(),分区可以让你按名字,姓氏和动作进行分组:
select distinct id
from (select pl.*,
row_number() over (partition by first_name, last_name, action) as seqnum
from person_log pl
) R
where seqnum > 1;