前言:
用存储函数做报表时候,打算把count(*),总数作为字段追加上去,然后发现报错。百度了一堆,发现除单独使用分组函数,还有就是用gourp by,可是如果用了group by就不能追加总数的数量作为字段。尝试了一下over函数,然后结果666。
现象:
SELECT EMP_NO,COUNT(EMP_NO) FROM EMP
报错:[Error] Execution (7: 18): ORA-00937: 不是单组分组函数
解决:
运用分析函数带有一个开窗函数over()
over()
SELECT EMP_NO,COUNT(EMP_NO) OVER() FROM EMP
好处:
1.不需要使用GROUP BY分组追加分组的数量作为字段,这样输出只能按照分组的总数作为字段。
2.OVER()可以多个字段一起输出,而不是单独使用分组函数,单独输出数量作为字段。