我试图在没有聚合函数的情况下理解 GROUP BY (oracle dbms 的新手) 。
它是如何运作的?
这是我尝试过的。
我将在其上运行我的 SQL 的 EMP 表。
SELECT ename , sal
FROM emp
GROUP BY ename , sal
SELECT ename , sal
FROM emp
GROUP BY ename;
结果
ORA-00979: 不是 GROUP BY 表达式
00979. 00000 - “不是 GROUP BY 表达式”
*原因:
*行动:
行错误:397 列:16
SELECT ename , sal
FROM emp
GROUP BY sal;
结果
ORA-00979: 不是 GROUP BY 表达式
00979. 00000 - “不是 GROUP BY 表达式”
*原因:
*操作:行错误:411 列:8
SELECT empno , ename , sal
FROM emp
GROUP BY sal , ename;
结果
ORA-00979: 不是 GROUP BY 表达式
00979. 00000 - “不是 GROUP BY 表达式”
*原因:
*操作:行错误:425 列:8
SELECT empno , ename , sal
FROM emp
GROUP BY empno , ename , sal;
所以,基本上列数必须等于 GROUP BY 子句中的列数,但我仍然不明白为什么或发生了什么。
原文由 XForCE07 发布,翻译遵循 CC BY-SA 4.0 许可协议
对于任何试图将数据(例如来自外部表)分组的人,例如带有嵌套数据数组的 json 对象,您可以在 sql 中使用
array_agg
来实现这一点(您也可以将其与json_build_object
结合使用---
创建一个带有键值对的 json 对象)。作为参考,我发现这个视频对 yt 很有帮助: https ://www.youtube.com/watch?v=A6N1h9mcJf4
- 编辑
如果你想在嵌套数组中有一个嵌套数组,你可以使用
array
来实现。在以下示例中,“variation_images”(子查询 2 - 与变体表相关)嵌套在“variation”查询(子查询 1 - 与产品表相关)下,该查询嵌套在产品查询(主查询)下: