假设我有下表:
child_id parent_id
1 2
2 3
3 -
4 5
5 6
6 -
7 8
并且我想创建下表:
child_id parent_id branch_id
1 2 1
2 3 1
3 - 1
4 5 2
5 6 2
6 - 2
7 8 3
其中branch_id表示通过parent_id链接在一起的分组。
但是, 不能保证行顺序 , 分支可能包含数百行 。这排除了LAG()函数的简单使用。
鉴于BigQuery的SQL的局限性,我该如何实现?
下面的示例说明了如何在这种情况下使用BigQuery脚本
DECLARE rows_count, run_away_stop INT64 DEFAULT 0;
CREATE TEMP TABLE input AS
SELECT 1 child_id, 2 parent_id UNION ALL
SELECT 2, 3 UNION ALL
SELECT 3, NULL UNION ALL
SELECT 4, 5 UNION ALL
SELECT 5, 6 UNION ALL
SELECT 6, NULL UNION ALL
SELECT 7, 8 ;
CREATE TEMP TABLE ttt AS
SELECT ARRAY(SELECT val FROM UNNEST([child_id, IFNULL(parent_id, child_id)]) val ORDER BY val ) arr FROM input;
LOOP
SET (run_away_stop, rows_count) = (SELECT AS STRUCT run_away_stop + 1, COUNT(1) FROM ttt);
CREATE OR REPLACE TEMP TABLE ttt AS
SELECT ANY_VALUE(arr) arr FROM (
SELECT ARRAY(SELECT DISTINCT val FROM UNNEST(arr) val ORDER BY val) arr
FROM (
SELECT ANY_VALUE(arr1) arr1, ARRAY_CONCAT_AGG(arr) arr
FROM (
SELECT t1.arr arr1, t2.arr arr2, ARRAY(SELECT DISTINCT val FROM UNNEST(ARRAY_CONCAT( t1.arr, t2.arr)) val ORDER BY val) arr
FROM ttt t1, ttt t2
WHERE (SELECT COUNT(1) FROM UNNEST(t1.arr) val JOIN UNNEST(t2.arr) val USING(val)) > 0
) GROUP BY FORMAT('%t', arr1)
)
) GROUP BY FORMAT('%t', arr);
IF (rows_count = (SELECT COUNT(1) FROM ttt) AND run_away_stop > 1) OR run_away_stop > 10 THEN BREAK; END IF;
END LOOP;
SELECT input.*, branch_id
FROM input
JOIN (
SELECT ROW_NUMBER() OVER() AS branch_id, arr AS IDs FROM ttt
)
ON child_id IN UNNEST(IDs)
最终输出
Row child_id parent_id branch_id
1 7 8 1
2 4 5 2
3 6 null 2
4 5 6 2
5 3 null 3
6 2 3 3
7 1 2 3
我想要的是,在不编写setup()方法的情况下,如何连接(或引用)两个xml(parent-xml和child-xml)? 在setup()方法中,有一些使context.xml child-xml connect(连接context.xml和child-xml)的逻辑(cording)。但我认为还有另一种方法可以把它们联系起来。Alredy我试着写了 在contextsub.xml中,但它不起作
我想点击第一个Android。小装置。EditText元素来自下面的页面源代码。源不包含任何有用的资源id 我已经做了xpath查询问题是我不能在这个地方使用xpath查询,我只能使用UiSelector,而且我没有太多通过UiSelector使用复杂选择器的经验。 我试着跟着,但没用 作为java中的代码,我使用的是 你知道怎么做吗?或链接以获取如何使用UiSelector的好例子? Andro
我使用的是Spring数据jpa。将子实体添加到父实体后,我将父实体保存到数据库。我想得到孩子的身份证,但我发现我得到的是空的。 我在getId()方法中添加了@GeneratedValue(Strategy=GenerationType.IDENTITY),但它不起作用。 以下是模型: 父实体已经在数据库中,所以我直接找到它,父存储库entends Jpa列举 这里是我的测试代码: 我得到的输出
问题内容: 如何使用链接调用JavaScript代码? 问题答案: 要么 编辑: 上面的回答确实不是一个好的解决方案,自从我最初发布以来,已经学到了很多有关JS的知识.
问题内容: 我有4个不同的表要加入。这些表的结构如下: 从表A开始,我了解如何使用b联接表a和c,因为b具有这些表的主键。我也希望能够在TableA上加入表TableD。下面是我的SQL语句,该语句首先连接表A和B,然后将其连接到C: 当我尝试添加另一个联接以包括D时,出现“ TableD”未知的错误: 问题答案: 您想要更多类似这样的东西: 在您的示例中,您实际上并未包含。您要做的就是像以前一样
问题1:就REST API而言,这是在Spring Hateoas中处理关系的正确方式吗? 问题2:如何将控制器中的url解析为数据上的可用句柄(例如,对适当控制器/方法的引用、主键等) 研究