2017-04-15 129 views
1

这是一个学校项目。我得到了一个表咨询以下数据:pl sql查询月平均值

DoctorId integer, 
PatientFile varchar2(20), 
visitDate date, 
Diagnostic varchar2(20) and 
Prescription varchar2(20). 

我想创建一个查询,将显示月平均咨询次数。我尝试:

SELECT AVG(count(*)) AS count, MONTH(dateVisit) as month 
FROM consultation 
GROUP BY month 

我不工作:我不能在dateVisit上使用月份功能。

我的问题:你将如何做一个查询,显示每月平均咨询次数?

提前感谢您的帮助

+0

'count(*)'是什么?这可能是一个线索。 – Boggartfly

+0

我想平均每个月的咨询数量,所以我尝试数(*)来计算每个表的发生次数。我不知道是否可以提取字段visitDate的月份,然后按月排序平均值? –

+1

我正在对MS SQL Server 2016进行调查。等一下! – Boggartfly

回答

1

我找到了解决办法:

select avg (distinct (extract(month from visitDate))) as month from 
consultation; 

因此,这里是它是如何工作的: 1-提取物(从TABLE_NAME月)为月从表名。你可以 也把年份或日期而不是月份。 012-2- distinct =将计算每个月的总数(而不是显示每条记录)。 3月平均=每个月的平均值。

+1

如果日期跨越数年,则考虑这种情况,例如2016年4月和2017年 –

+0

我无法解决当年的情况。你能告诉我你会怎么做吗? –

+1

例如'trunc(visitDate,'MM')'或'extract(visit fromDate)year ||提取(从visitDate月)' –