javascript - soda-js Group By 返回“无效的 SoQL 查询”
问题描述
我正在使用soda-js查询 USAC E-rate 数据库,我需要将 Group By 添加到我的查询中。Soda-js 有一个group
方法作为query
函数的一部分,但是每当我包含它时,http 请求都会失败。
这是返回响应的代码:
consumer.query()
.withDataset(dataset_id)
.limit(50)
.select('*')
.where({ org_state: 'CO' })
.getRows()
.on('success', function(rows) { console.log(rows); })
.on('error', function(error) { console.error(error); });
这是 .group
返回400 (Bad Request)
错误的代码:
consumer.query()
.withDataset(dataset_id)
.limit(50)
.select('*')
.where({ org_state: 'CO' })
.group('billed_entity_number') // <------ ADDED ROW
.getRows()
.on('success', function(rows) { console.log(rows); })
.on('error', function(error) { console.error(error); });
如果我更改.group('billed_entity_number')
为.group(null)
查询工作。
考虑到 Group 上的SoQL 文档,我似乎无法找到失败的原因。
有什么帮助吗?
解决方案
在进一步查看文档后,我发现了措辞不佳的句子:
$group 必须与 $select 一起使用,以提供您希望使用的聚合函数。
我不认为自己能胜任 SQL,但上次我检查时,聚合函数不需要使用 GROUP BY。所以我猜SoQL在这个意义上是独一无二的。
就我而言,我放置MAX()
了所有的 SELECT 字段,并按照我的意愿返回:
consumer.query()
.withDataset(dataset_id)
.limit(50)
.select('billed_entity_number','MAX(org_state) as org_state','MAX(billed_entity_name) as billed_entity_name')
.where({ org_state: 'CO' })
.group('billed_entity_number')
.getRows()
.on('success', function(rows) { console.log(rows); })
.on('error', function(error) { console.error(error); });
推荐阅读
- python - 代码没有遍历我的 CSV 文件中的每个名称
- .htaccess - 如何在 robots.txt 或 .htaccess 上阻止某种类型的网址?
- excel - 比较列并输出一个值
- python - Python:如何将列表添加到命名的多维数组
- ruby-on-rails-5.2 - jsonapi-resources 自定义操作
- c# - 事件发生错误时重新启动服务 C#
- python - 使用 NLTK 提取法语文本
- c# - 统一获取组件
返回值 - node.js - .env 文件中的密钥在 NodeJS 中不起作用
- javascript - 函数 CollectionRefernce.doc() 要求它的第一个参数是字符串类型