SQL Group By函数(列) – 现在无法选择该列
发布时间:2020-12-12 06:50:09 所属栏目:MsSql教程 来源:网络整理
导读:我在Oracle Express中使用了HR员工架构,我想选择在特定年份雇用的员工. SELECT hire_date,COUNT(*) FROM employees emplGROUP BY SUBSTR(hire_date,-4)ORDER BY empl.hire_date; hire_date列的格式为“1/1/2011”,所以我想将它们分组 通过提取最后四个字符.
我在Oracle Express中使用了HR员工架构,我想选择在特定年份雇用的员工.
SELECT hire_date,COUNT(*) FROM employees empl GROUP BY SUBSTR(hire_date,-4) ORDER BY empl.hire_date; hire_date列的格式为“1/1/2011”,所以我想将它们分组 问题是,我遇到以下错误 ORA-00979: not a GROUP BY expression 00979. 00000 - "not a GROUP BY expression" *Cause: *Action: Error at Line: 1 Column: 7 这不可能吗? 解决方法如果您仅按其最后四位数进行分组,则无法选择完整的hire_date.想想如果你有两行会发生什么:hire_date ========= 01/01/2001 02/02/2001 在分组时生成的单行中,hire_date应该是什么? 选择的每个列必须是分组列或聚合列.换句话说,尝试: select substr(hire_date,-4),count(*) from employees group by substr(hire_date,-4) order by empl.hire_date; 我应该提一下,每行功能在缩放方面都是出了名的.如果您想要处理很多年份,您应该考虑将其拆分为自己的列.这可能会大大提高性能,但衡量,不要猜! 并且,正如其他人在评论中提到的那样,substr可能不是最好的解决方案,因为这可能取决于区域设置(如:日期可能被格式化为YYYY-MM-DD,这对于子串也不会很好). 使用像to_char(hire_date,’YYYY’)或extract(从hire_date开始的年份)这样的东西可能会更好一些. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |