[英]sql group by column name
我虽然 GROUP BY 必须按列跟随,但在互联网上找到了这样的例子,但不知道它是如何以及为什么起作用的? 我正在使用 ORACLE
在职的:
SELECT TRUNC(SALARY/5000 , 0), COUNT(*)
FROM EMPLOYEES
GROUP BY TRUNC(SALARY/5000 , 0);
不工作:
SELECT SALARY, COUNT(*)
FROM EMPLOYEES
GROUP BY TRUNC(SALARY/5000 , 0);
谁告诉你只能按列分组? 这不是真的。
您按表达式分组。 这些可以是列(例如salary
)或所选行上的任何其他操作,例如salary * tax
、 salary * 100
等。
GROUP BY x, y
表示您希望聚合数据以获得每个 x/y 对的一个结果行。
如果您按TRUNC(SALARY/5000, 0)
分组,则每个表达式结果都会得到一个结果行。 工资 5100、5200 和 9000 将在一组中,因为它们的结果是 1,因此工资 11000 和 13000 将在另一组中。
COUNT(*)
为您提供该组中的薪水数量,但您不能 select SALARY
,因为您可以显示的组中没有一个薪水,可以有很多。 如果你想显示薪水,决定哪一个。 最低MIN(salary
)? 最高MAX(salary
)? 平均AVG(salary
)?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.