社区首页 >问答首页 >如果唯一的SELECTed列已经在GROUP BY中,为什么还要选择一个聚合列才能使用GROUP BY?

如果唯一的SELECTed列已经在GROUP BY中,为什么还要选择一个聚合列才能使用GROUP BY?
EN

Stack Overflow用户
提问于 2016-06-01 21:30:37
回答 2查看 2.2K关注 0票数 5

在下面的公式使用的数据中,列C包含产品名称列表(这些不是唯一的,许多是空的);列Q包含每个产品的类别,列F包含该产品的销售额。如果可能,我希望避免发布任何实际数据(因为它属于我的雇主),但如果认为有必要,我可以模拟一些相同格式的伪行。

我想要做的是生成一个列表,列出总销售额最高的某个类别中的非空白产品标题,按降序排序,限制为25个条目。

下面的公式在我看来是完全合理的:

代码语言:javascript
代码运行次数:0
复制
=QUERY('Raw Data'!A:Q, "Select C where Q = 'foo' and C != '' group by C order by sum(F) desc limit 25", 1)

但事实并非如此,我得到的错误是"CANNOT_GROUP_WITHOUT_AGG“。我发现要使其工作,我还需要选择sum(F),如下所示:

代码语言:javascript
代码运行次数:0
复制
=QUERY('Raw Data'!A:Q, "Select C, sum(F) where Q = 'foo' and C != '' group by C order by sum(F) desc limit 25", 1)

首先,为什么会这样呢?文档(found here)声明:“如果使用group by子句,那么select子句中列出的每一列都必须在group by子句中列出,或者由聚合函数包装。”我不明白第一个公式为什么不符合这个标准;select中的每一列(即只有C)都列在group by子句中。

其次,我怎样才能最好地修改这个公式(如果我可以的话),使其只能选择C?如果我没有做错任何事情(值得怀疑,但有可能),有没有办法解决这个问题,或者我只需要处理它?

This question和其他类似的应用程序不会回答我的问题--我知道如果我想选择多个列,就像我在上面给出的第二个公式中所做的那样,我需要提供一个聚合函数,以便清楚地知道如何对它们进行分组。但是,在本例中,只有一列-我只希望将它(并且只对它)进行分组。我在这里遗漏了什么不允许这样做?

EN

回答 2

Stack Overflow用户

发布于 2016-06-22 17:03:05

最简单的解决方案可能是将另一个查询公式包含在第一个查询公式中:

=QUERY(QUERY('Raw Data'!A:Q, "select C, sum(F) where Q = 'foo' and C != '' group by C order by sum(F) desc limit 25", 1),"select Col1")

票数 1
EN

Stack Overflow用户

发布于 2017-04-19 13:57:06

在实践中,我最终做的是在ARRAY_CONSTRAIN()中包装2列响应,如下所示:

=ARRAY_CONSTRAIN(QUERY('Raw Data'!A:Q, "Select C, sum(F) where Q = 'foo' and C != '' group by C order by sum(F) desc limit 25", 1), 1, 10000)

10000用于表示任意大小的列数,大于我所知道的QUERY()应该输出的列数。这似乎是我能找到的最便宜的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37579114

复制
相关文章
Confluence 6 创建站点的导出文件 原
 > 基本配置(General Configuration) > 备份和恢复(Backup & Restore)。
HoneyMoose
2019/01/31
5060
Confluence 6 数据导入和导出 原
Confluence 管理员和用户可以从各种方法向  Confluence 中导入数据。针对不同的导入方式,有关权限的要求也是不相同的。请参考页面 Import Content Into Confluence 中内容。
HoneyMoose
2019/01/30
1.6K0
VsCode插件导出若干讨论
因此,如treehead的编辑或MarkP的答案所示,您现在可以列出所有已安装的扩展,因此安装该扩展列表的方式是:
云深无际
2020/11/03
5.4K0
VsCode插件导出若干讨论
如何为Joomla标签创建布局覆盖
这将在/templates/your-template/html/layouts/joomla/content/文件夹中生成一组文件。
用户3850506
2019/07/30
1.4K0
Confluence 6 创建-使用-删除快捷链接
在高级(Advanced )标签页中插入链接对话框。请参考 Links 页面中的内容获得更多信息。
HoneyMoose
2019/01/30
1.7K0
Confluence 6 创建-使用-删除快捷链接
Strapi内容备份导出转移插件安装教程:Import/Export Entries (导出与备份插件)
地址:https://market.strapi.io/plugins/strapi-plugin-import-export-entries
JIUOK.CN
2023/08/14
7160
Strapi内容备份导出转移插件安装教程:Import/Export Entries (导出与备份插件)
一个小团队使用的知识管理方案与工具
公司在使用 Mediawiki 进行内部知识管理也有一段时间了,使用过一段时间发现问题不少。其中最让人抓狂的应该就是 Mediawiki 的插件了,虽然数量很多,但安装过程中五花八门的异常,有时候就是一种灾难;其次,Mediawiki 书写体验一般,尤其对于不熟悉 wiki 语法的童鞋,上手慢,虽然说有支持 markdown 和其他编辑器的插件,但安装过程中的那种酸爽……,有时候真的是一个接着一个的坑!
章鱼猫先生
2021/10/15
1.4K0
一个小团队使用的知识管理方案与工具
Confluence 6 创建小组的公众空间 原
现在是我们可以开始创建公众空间的时候了,全世界都希望知道这个项目和勇敢的探险活动。
HoneyMoose
2019/01/30
4790
Confluence 6 创建小组的公众空间
                                                                            原
使用openXML 不用插件导出excel
注释很详细,不做解释了,有疑问可以提问 using System.IO; using System.Text; namespace iLIS.Common { /// <summary> /// 生成Excel文档内容 /// 存入工作流 /// </summary> public class ExcelDocumentx { private readonly StreamWriter _streamWriter; pub
用户6362579
2019/09/29
8380
如何为Nginx创建自签名SSL证书
SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。 TLS与SSL在传输层对网络连接进行加密。
尘埃
2018/07/20
11.8K0
Confluence 6 创建一个空间 原
在 Confluence 中并不限制你可以创建多少空间。你可以选择为你每一个小组,项目都创建一个空间,或者你也可以将这 2 者混合在一起。所有的这些都基于你的需求来决定的.
HoneyMoose
2019/01/30
4690
Confluence 6 创建一个空间
                                                                            原
Confluence 6 Oracle 创建数据库用户
https://www.cwiki.us/display/CONFLUENCEWIKI/Database+Setup+for+Oracle
HoneyMoose
2019/01/31
6600
Confluence 6 创建一个项目空间 原
火星移民小组的程序需要一个地方能够调出他们任务的相关关键信息和资源,你的任务就是帮助他们实现和管理这个需求。这部分是比较容易实现的,因为这些信息需要让空间项目组中完全可见。
HoneyMoose
2019/01/30
4100
Confluence 6 创建一个项目空间
                                                                            原
Confluence 6 创建你的个人空间 原
作为一个项目中的新手,你可能希望将一些工作保存为你自己可见,直到你准备将你的工作分享出去。同时你可能会收到任务指挥中心发送的只针对你的任务,你也希望这些任务能存储在一个安全的地方。
HoneyMoose
2019/01/30
1.7K0
Confluence 6 创建你的个人空间
                                                                            原
Cordova 创建 Demo插件
MyPluginName.js JavaScript接口,用于插件与混合应用的接口。
acc8226
2022/05/17
7000
jquery.fileDownload.js插件导出excel
因为使用ajax导出excel会出现问题,所以现在使用jQuery.fileDownload.js插件来解决导出excel的问题
迅达集团
2019/03/09
5.1K0
Confluence 6 home 目录 原
Confluence Home 目录是存储 Confluence 信息,查找索引,页面附件的地方。其实 Home 目录也可以定义为数据目录。
HoneyMoose
2019/01/30
1.3K0
使用phpword插件实现word文档导出
phpword的GitHub地址: https://github.com/PHPOffice/PHPWord
猿哥
2020/02/26
3.9K0
mac下导出chrome插件及安装
3.命令行进入文件夹下想要打包的版本的目录内,输入pwd显示路径,然后复制
薛定喵君
2020/09/10
7.1K0
mac下导出chrome插件及安装
点击加载更多

相似问题

如何在构建过程中禁用代码优化?

10

在Swift操场禁用某些代码行的运行

13

javac在优化我的代码方面失败了吗?

26

如何在qooxdoo构建过程中禁用优化?

10

如何在代码运行后禁用/限制代码行?(Python)

41
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文