繁体   English   中英

sql 按列名分组

[英]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 * taxsalary * 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM