多行的Postgresql分组依据

多行的Postgresql分组依据,sql,postgresql,duplicates,postgresql-9.3,Sql,Postgresql,Duplicates,Postgresql 9.3,我有一张按日历命名的桌子。我只想过滤掉同一员工在同一天有两次休假的行 表hr\U假日按日历列出: 我尝试过的查询: 在解决这件事上没有任何进展 select hol1.employee_id, hol1.leave_date, hol1.no_of_days, hol1.leave_state from hr_holidays_by_calendar hol1 inner join (select employee_id, leave_date from hr_holidays

我有一张按日历命名的桌子。我只想过滤掉同一员工在同一天有两次休假的行

表hr\U假日按日历列出:

我尝试过的查询: 在解决这件事上没有任何进展

select hol1.employee_id, hol1.leave_date, hol1.no_of_days, hol1.leave_state
from hr_holidays_by_calendar hol1
inner join
    (select employee_id, leave_date 
    from hr_holidays_by_calendar hol1
    group by employee_id, leave_date 
    having count(*)>1)sub
on hol1.employee_id=sub.employee_id and hol1.leave_date=sub.leave_date
where hol1.leave_state != 'refuse'
order by hol1.employee_id, hol1.leave_date

我想你只需要改变你的逻辑。您不能使用不存在的文件:

这将丢弃在同一天有多行休假的每个员工、日期对


我没有把天数考虑在内,因为不管怎样,这似乎是错误的——你不能在同一天休假两次,而这两次休假的天数是不同的。如果应用程序允许,请考虑应用附加逻辑。此外,您首先不应该让这些记录进入表中:-

我假设您只需要颠倒逻辑。您不能使用不存在的文件:

这将丢弃在同一天有多行休假的每个员工、日期对


我没有把天数考虑在内,因为不管怎样,这似乎是错误的——你不能在同一天休假两次,而这两次休假的天数是不同的。如果应用程序允许,请考虑应用附加逻辑。此外,您首先不应该让这些记录出现在表中:-

我相信简单地使用GROUP BY就可以完成这项工作

select hol1.employee_id, hol1.leave_date, max(hol1.no_of_days)
from hr_holidays_by_calendar hol1
where hol1.leave_state != 'refuse'
group by hol1.employee_id, hol1.leave_date

现在还不清楚如果两行的“禁止”天数不同,会发生什么情况。

我相信简单地使用“分组方式”就可以完成这项工作

select hol1.employee_id, hol1.leave_date, max(hol1.no_of_days)
from hr_holidays_by_calendar hol1
where hol1.leave_state != 'refuse'
group by hol1.employee_id, hol1.leave_date

目前还不清楚如果两行的“无天数”不同,会发生什么情况。

如果需要完整的行,有一种方法使用窗口函数:

select hc.*
from (select hc.*, count(*) over (partition by employee_id, leave_date) as cnt
      from hr_holidays_by_calendar hc
     ) hc
where cnt >= 2;

如果只需要员工id和日期,则聚合是合适的。

如果需要完整的行,则有一种方法使用窗口函数:

select hc.*
from (select hc.*, count(*) over (partition by employee_id, leave_date) as cnt
      from hr_holidays_by_calendar hc
     ) hc
where cnt >= 2;
如果只需要员工id和日期,则聚合是合适的。

这将返回存在重复项的所有行:

目前尚不清楚州政府“拒绝”应适用于何处。您必须定义需求。我的示例排除了leave_state='denke'的行,并且leave_state为NULL!完全是

ctid是一个穷人的代理你的未公开的未定义?主键

相关的:

这将返回存在重复项的所有行:

目前尚不清楚州政府“拒绝”应适用于何处。您必须定义需求。我的示例排除了leave_state='denke'的行,并且leave_state为NULL!完全是

ctid是一个穷人的代理你的未公开的未定义?主键

相关的:


如果这些重复行中的天数不同呢?h.离开州的位置有什么作用!='外部查询中的“拒绝”?您可能必须在内部查询中进行筛选-这取决于您未公开的要求。请记住,实际的表定义创建表。。。脚本最有助于澄清您的设置。我们更喜欢文本作为数据,而不是屏幕截图。无法从屏幕截图复制/粘贴…如果这些重复行中的天数不同怎么办?h.leave_state的作用是什么!='外部查询中的“拒绝”?您可能必须在内部查询中进行筛选-这取决于您未公开的要求。请记住,实际的表定义创建表。。。脚本最有助于澄清您的设置。我们更喜欢文本作为数据,而不是屏幕截图。无法从截图复制/粘贴…非常感谢Erwin Brandstetter。。。这就是我需要做的。我真的很抱歉缺乏信息。再次感谢您提供的清晰指南非常感谢Erwin Brandstetter。。。这就是我需要做的。我真的很抱歉缺乏信息。再次感谢您的清晰指导