记录少于 2 列之间的平均天数

Posted

技术标签:

【中文标题】记录少于 2 列之间的平均天数【英文标题】:records less than average number of days between 2 columns 【发布时间】:2014-11-21 13:11:56 【问题描述】:

我试图弄清楚如何仅选择 start_date 和 end_date 之间天数少于平均天数的记录。

我的表中有 3 条记录,我用 avg 尝试了很多方法,但似乎没有完成。这是我创建的表(大学)的样子:

dep_id / class_id / start_date / end_date / cmets

7500 / 10050 / 10-FEB-10 / 20-FEB-10 / 清洁

7501 / 10060 / 17-MAR-10 / 22-MAR-10 / 脏

7502 / 10070 / 21-JUN-10 / 29-JUL-10 / 清洁

这是我到目前为止所尝试和得到的:

select dep_id, class_id, start_date, end_date, comments
from university
where dep_id = (select avg( cast(end_date as DATE) - cast(start_date as date)) as avg_days
from university);

【问题讨论】:

【参考方案1】:

试试这个:

SELECT dep_id,class_id,start_date,end_date,comments
  FROM (
  SELECT t1.*,AVG(TO_DATE(end_date,'dd-mon-yy') - TO_DATE(start_date,'dd-mon-yy')) OVER() total_avg
  ,TO_DATE(end_date,'dd-mon-yy') - TO_DATE(start_date,'dd-mon-yy') diff  FROM university t1) q
  WHERE diff< total_avg

【讨论】:

以上是关于记录少于 2 列之间的平均天数的主要内容,如果未能解决你的问题,请参考以下文章

Pandas 中一列中的值之间的平均天数差异

8.7 确定当前记录和下一条记录之间相差的天数

8.07 确定当前记录和下一条记录之间相差的天数

由两列分组的平均值,窗口为 3 个月,NaN 少于 3 个月

选择 2 个日期之间的记录平均值 SQL Netezza

sql如何查询历史同期记录