KADB行列转换

create table row2col(name varchar(20),subject varchar(20),grade varchar(10));

insert into row2col SELECT 'Tim' name, '数学' subject, 'A' grade

UNION

SELECT 'Tim' name, '英语' subject, 'B' grade

UNION

SELECT 'Tim' name, '语文' subject, null grade

UNION

SELECT 'Tom' name, '数学' subject, 'B' grade

UNION

SELECT 'Tom' name, '英语' subject, 'D' grade

UNION

SELECT 'Tom' name, '语文' subject, 'B' grade;

行转列:

select t.name,t.grades[1] 数学,t.grades[2] 英语,t.grades[3] 语文 from(

SELECT

t.name,

array_agg(t.grade order by t.subject) grades

FROM row2col t group by t.name)t;

name | 数学 | 英语 | 语文

------+------+------+------

Tim | A | B |

Tom | B | D | B

列转行:

select name,unnest(array['数学','英语','语文']),unnest(array[数学,英语,语文]) from (select t.name,t.grades[1] 数学,t.grades[2] 英语,t.grades[3] 语文 from(

SELECT

t.name,

array_agg(t.grade order by t.subject) grades

FROM row2col t group by t.name)t

)a;

name | unnest | unnest

------+--------+--------

Tim | 数学 | A

Tim | 英语 | B

Tim | 语文 |

Tom | 数学 | B

Tom | 英语 | D

Tom | 语文 | B

2、递归的实现方式

CREATE TABLE employees (

employee_id serial PRIMARY KEY,

full_name VARCHAR NOT NULL,

manager_id INT

);

INSERT INTO employees (

employee_id,

full_name,

manager_id

)

VALUES

(1, 'Michael North', NULL),

(2, 'Megan Berry', 1),

(3, 'Sarah Berry', 1),

(4, 'Zoe Black', 1),

(5, 'Tim James', 1),

(6, 'Bella Tucker', 2),

(7, 'Ryan Metcalfe', 2),

(8, 'Max Mills', 2),

(9, 'Benjamin Glover', 2),

(10, 'Carolyn Henderson', 3),

(11, 'Nicola Kelly', 3),

(12, 'Alexandra Climo', 3),

(13, 'Dominic King', 3),

(14, 'Leonard Gray', 4),

(15, 'Eric Rampling', 4),

(16, 'Piers Paige', 7),

(17, 'Ryan Henderson', 7),

(18, 'Frank Tucker', 8),

(19, 'Nathan Ferguson', 8),

(20, 'Kevin Rampling', 8);

返回id为2的经理的所有下属

WITH RECURSIVE subordinates AS (

SELECT

employee_id,

manager_id,

full_name

FROM

employees

WHERE

employee_id = 2

UNION

SELECT

e.employee_id,

e.manager_id,

e.full_name

FROM

employees e

INNER JOIN subordinates s ON s.employee_id = e.manager_id

) SELECT

*

FROM

subordinates;

employee_id | manager_id | full_name

-------------+------------+-----------------

2 | 1 | Megan Berry

9 | 2 | Benjamin Glover

8 | 2 | Max Mills

7 | 2 | Ryan Metcalfe

6 | 2 | Bella Tucker

19 | 8 | Nathan Ferguson

18 | 8 | Frank Tucker

20 | 8 | Kevin Rampling

16 | 7 | Piers Paige

17 | 7 | Ryan Henderson

相关推荐
EXtreme354 天前
【数据结构】彻底搞懂二叉树:四种遍历逻辑、经典OJ题与递归性能全解析
c语言·数据结构·算法·二叉树·递归
汉克老师5 天前
GESP2025年12月认证C++八级真题与解析(单选题10-12)
c++·递归··gesp八级·gesp8级
jackyrongvip11 天前
10个动画介绍递归(用Gemin3生成)
数据结构·递归·gemin3
l1t16 天前
DeepSeek对利用DuckDB求解Advent of Code 2021第9题“烟雾盆地”第二部分SQL的分析
数据库·人工智能·sql·递归·duckdb·deepseek·cte
hnjzsyjyj17 天前
东方博宜OJ 1683:递归法求最大值 ← 递归
递归
l1t17 天前
postgresql递归查询指定搜索顺序的方法
数据库·postgresql·dfs·递归·cte
l1t18 天前
sqlite递归查询指定搜索顺序的方法
数据库·sql·sqlite·dfs·递归·cte
yaoh.wang24 天前
力扣(LeetCode) 70: 爬楼梯 - 解法思路
python·算法·leetcode·面试·职场和发展·动态规划·递归
DanyHope25 天前
LeetCode 206. 反转链表:迭代 + 递归双解法全解析
算法·leetcode·链表·递归·迭代
oscar9991 个月前
CSP-J教程——第一阶段第十一课:函数与递归初步
递归·函数·csp-j