【发布时间】:2020-04-18 08:09:47
【问题描述】:
表创建:
CREATE TABLE temp (
name varchar(20),
dep varchar(20));
INSERT INTO temp VALUES
('a', null),
('b', null),
('c', 'b'),
('d', 'c'),
('e', 'b'),
('e', 'd');
我需要社区的帮助来编写一个生成新列的查询,比如 xyz,如果 dep 为空,则该列的值为 1。否则它必须为对应的 name 取 dep 并将 xyz 列值加 1。
例如:这里c是依赖于b的,所以要取bxyz /strong> 具有 1 并在其上加 1,从而使 c 的 xyz 值为 2,依此类推。
输出:
+------+------+-----+
| name | dep | xyz |
+------+------+-----+
| a | null | 1 |
| b | null | 1 |
| c | b | 2 |
| d | c | 3 |
| e | b | 2 |
| e | d | 4 |
+------+------+-----+
表创建:
create table temp1(name varchar(20), dependency varchar(20));
insert into temp1 values
('city', null), ('state', null), ('country', 'city'),
('country','state'), ('pin','country'), ('pin','state'),
('continent','country'), ('continent','pin'), ('continent','city');
预期输出:这里的序列是要生成的新列。
| name | dependency | sequence |
|----------|------------|----------|
| city | null | 1 |
| state | null | 1 |
| country | city | 2 |
| country | state | 2 |
| pin | country | 3 |
| pin | state | 2 |
| continent| country | 3 |
| continent| pin | 4 |
| continent| city | 2 |
我向社区提出的第一个问题 :) 提前感谢你们。
【问题讨论】:
-
是的。从一个艰难的开始!您想在哪个数据库和版本中执行此操作?
-
您需要
pyspark̀解决方案吗?因为有标签,但您在问题中没有提及任何有关 spark 的内容 -
你需要一个递归查询,MySql 8.0 有。 dev.mysql.com/doc/refman/8.0/en/with.html
-
我需要 spark SQL 或 pyspark 或 MySQL。我用另一个例子更新了这个问题。帮帮我。
-
根据您的编辑,答案已更新