我的查询有什么问题? (无效的查询:查询解析错误)

时间:2013-11-19 17:01:08

标签: google-visualization google-sheets

我正在尝试在电子表格中使用Google图表查询来计算特定人在特定日期的表单回复数量。

我对Google Charts查询语言非常陌生(我刚开始尝试在大约一小时前弄清楚),但我知道SQL所以我认为这不会太难。

无论如何,这就是我现在的查询:

=QUERY('Form Responses'!A2:F100, "select count(*) where name = 'Ajedi32' and date timestamp = date '2013-11-19'", {"timestamp", "name", "done", "todo", "blocker", "comment"})

这是我得到的错误:

  

错误:查询无效:查询解析错误:在第1行第14列遇到“”*“”*“”。期待以下之一:“min”...“max”...“avg”.. 。“count”......“sum”......“no_values”......“no_format”......“是”......“null”......“年”......“月”......“日“......”小时“......”分钟“...”第二个“...”毫秒“......”与“...”包含“...”开始“...”结束“ ......“匹配”......“喜欢”......“现在”......“dateDiff”......“季度”......“低”......“上部”...“dayOfWeek”.. “toDate”...... ......

我不明白。为什么期望函数名而不是*

2 个答案:

答案 0 :(得分:1)

我认为问题可能是count(*)不是Query语言中的有效构造。请尝试使用列名而不是*

[编辑 - 答案与不同的API有关;下面的新答案]

在阅读了其他用户(link1link2,[link3(Google spreadsheet Query Error - column doesn't exist))的一些问题后,好像QUERY函数不支持使用列名。您可以按字母引用列:

=QUERY($A$1:$C$10, 'select A, B, C');

或所选范围内的列索引:

=QUERY($A$1:$C$10, 'select col1, col2, col3');

尝试一下,看看是按字母或索引查找列。

答案 1 :(得分:0)

最终,我最终完全通过使用过滤功能来避免查询功能:

=COUNT(FILTER('Form Responses'!$A$1:$F$100; DATEVALUE('Form Responses'!$A1:$A100)=DATEVALUE('2013-11-19'); 'Form Responses'!$B1:$B100='Ajedi32'))

扩展了可读性:

=COUNT(
  FILTER(
    'Form Responses'!$A$1:$F$100;
    DATEVALUE('Form Responses'!$A1:$A100)=DATEVALUE('2013-11-19');
    'Form Responses'!$B1:$B100='Ajedi32'
  )
)

(如果有人还想回答我原来的问题,请随意。)