[英]How to create a table resulting from joining of two or more table with this structure?
假設我有兩個具有以下結構和相同值的表-
+-----------+-----------+---------+-------+--------+---------+--------+---------+
| TEACHER | STUDENT | CLASS | SEC | HB_a | VHB_b | HG_c | VHG_d |
|-----------+-----------+---------+-------+--------+---------+--------+---------|
| 1 | - | - | - | 1 | 1 | 1 | 1 |
| - | 1 | 10 | D | 1 | 1 | 1 | 1 |
| - | 1 | 9 | D | 1 | 1 | 1 | 1 |
+-----------+-----------+---------+-------+--------+---------+--------+---------+
CLASS 可以 go 來自 6-12 和 SEC 來自 AZ,
*在 STUDENT、CLASS、SEC 中沒有任何內容,而在 TEACHER 中有一些價值,反之亦然。
現在我想創建一個表格,將兩個表格與上面給出的確切結構和數據連接起來......即,我希望結果如下所示 -
+-----------+-----------+---------+-------+--------+---------+--------+---------+
| TEACHER | STUDENT | CLASS | SEC | HB_a | VHB_b | HG_c | VHG_d |
|-----------+-----------+---------+-------+--------+---------+--------+---------|
| 2 | - | - | - | 2 | 2 | 2 | 2 |
| - | 2 | 10 | D | 2 | 2 | 2 | 2 |
| - | 2 | 9 | D | 2 | 2 | 2 | 2 |
+-----------+-----------+---------+-------+--------+---------+--------+---------+
我試過這樣的東西,但效果不好,output 不是我想要的-
__tbl_sy = f"""
CREATE TABLE <tbl>
AS SELECT CLASS, SEC, SUM(TEACHER), SUM(STUDENT), SUM(HB_a), SUM(VHB_b), SUM(HG_c), SUM(VHG_d)
FROM <tbl1>
UNION
SELECT CLASS, SEC, SUM(TEACHER), SUM(STUDENT), SUM(HB_a), SUM(VHB_b), SUM(HG_c), SUM(VHG_d)
FROM <tbl2>
GROUP BY CLASS, SEC
"""
Cursor.execute(__tbl_sy)
對於您發布的示例數據,這將起作用:
select
sum(teacher) teacher, sum(student) student,
class, sec,
sum(hb_a) hb_a, sum(vhb_b) vhb_b, sum(hg_c) hg_c, sum(vhg_d) vhg_d
from (
select * from tbl1
union all
select * from tbl2
)
group by class, sec
請參閱演示。
結果:
| teacher | student | CLASS | SEC | hb_a | vhb_b | hg_c | vhg_d |
| ------- | ------- | ----- | --- | ---- | ----- | ---- | ----- |
| 2 | | | | 2 | 2 | 2 | 2 |
| | 2 | 10 | D | 2 | 2 | 2 | 2 |
| | 2 | 9 | D | 2 | 2 | 2 | 2 |
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.