【问题标题】:records less than average number of days between 2 columns记录少于 2 列之间的平均天数
【发布时间】: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);

【问题讨论】:

    标签: oracle date average


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-22
      • 2011-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      • 1970-01-01
      • 2023-01-25
      相关资源
      最近更新 更多