代码之家  ›  专栏  ›  技术社区  ›  Josh Laird

使用行参数在所有行上的SQL函数

  •  0
  • Josh Laird  · 技术社区  · 6 年前

    我有一个表,有3列我关心: Name , Id ParentId 是的。我想知道有多少孩子 身份证件 需要我检查每一排。

    以下是我目前掌握的情况:

    CREATE TEMPORARY FUNCTION numChildren(givenId INT64)
      RETURNS INT64
      AS ((SELECT count(*) FROM `playground.table` WHERE ParentId = givenId));
    
    SELECT numChildren(Id) OVER() as Test FROM `playground.table`
    

    我得到的确切错误是: Error: Function USER_DEFINED_FUNCTIONS:NUMCHILDREN does not support an OVER clause at [5:8] 是的。

    我想通过每一排,通过 身份证件 返回到函数中,然后返回具有 身份证件 作为 父ID 是的。

    我这样做对吗?我需要使用api来执行这样的查询吗?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Mikhail Berlyant    6 年前

    只需移除 OVER() 如下所示

    CREATE TEMPORARY FUNCTION numChildren(givenId INT64)
    RETURNS INT64
      AS ((SELECT count(*) FROM `playground.table` WHERE ParentId = givenId));
    
    SELECT numChildren(Id) as Test FROM `playground.table`