sql - Oracle 问题分组
问题描述
我知道很多人都会问这个问题。但我仍然无法弄清楚为什么会这样。无法理解这个逻辑。
我有一个带有列的表id
mytesttablecompany_name
和employee_name
.
我试图让员工详细信息根据公司名称对它们进行分组。所以我使用了以下查询:
select *
from mytesttable
group by company_name;
但我得到以下问题:
ORA-00979: not a GROUP BY expression
00979. 00000 - "not a GROUP BY expression"
*Cause:
*Action:
Error at Line: 28 Column: 2
现在我尝试将 count(1) 与我的列一起放在 select 中,尝试使用 2 列进行分组等。仍然是同样的问题。谁能解释我如何实现这一目标?
因为这是一个简单的group by。逻辑似乎是正确的,但想知道为什么它没有让我得到结果。
解决方案
您的查询是:
select *
from mytesttable
group by company_name;
*
扩展到所有列。所以这变成:
select company_name, col1, col2, col3, . . . -- your question doesn't specify the column names
from mytesttable
group by company_name;
当您指定 时,您指定结果集中group by
每行有一行。company_name
其他列通常用聚合函数填充,例如MIN()
、SUM()
或LISTAGG()
。
应该选择什么值col1
?一般来说,SQL 不会试图回答这个问题。相反,它返回一个语法错误。这不是 Oracle 特定的。这是语言的定义。
你可能想要的是:
select company_name, count(*) as num_employees
from mytesttable
group by company_name;
推荐阅读
- java - 如何使用 MDC Slf4j 进行并发访问
- elasticsearch - 弹性搜索查询,根据父id获取最新的子文档
- r - 如何在闪亮的 pheatmap 中获取列名?
- python - lmfit 不探索参数空间
- c# - 我是否需要提高 Cloud SQL 连接的安全性?
- google-cloud-firestore - 检查集合在 Firestore 安全规则中是否有长度
- bootstrap-4 - Bootstrap:设置自定义颜色
- swift - 带有转义反斜杠的 Swift 正则表达式不起作用
- python - 如何运行:“vscode中的python manage.py runserver。我想为我的项目运行一个新服务器
- python - 有条件地为其他数据框元素创建数据框