记录少于 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 列之间的平均天数的主要内容,如果未能解决你的问题,请参考以下文章