gpt4 book ai didi

sql - 在 SQL 中汇总表

转载 作者:行者123 更新时间:2023-12-02 15:15:28 25 4
gpt4 key购买 nike

我有下表:

MedicineID  Type    PlantId category
1223456 ABC P1 A
7821632 DEF P2 B
5436710 GHI P1 D
6743210 ABC P3 A
4321793 THE P4 D
7285743 ABC P1 B
4143521 DEF P3 A
5234345 GHI P2 D
5132451 FGE P1 B
1235432 REF P4 A
5652315 GHI P3 D
6733115 ABC P2 B
7752242 DEF P3 A
2652225 GHI P2 D
6242352 ABC P1 B

我有 7 种不同类型的药物 = [ABCDEFGHI这FGE引用文献XYZ] 每个都可以分为 4 个不同的类别。这些药物由 4 种不同的植物制成。所有的植物都有能力制造所有的药物。我想知道查看表格时,每种植物的每种类型和每个类别生产了多少种不同的药物。我的结果表应该是这样的。

Plant   Type     A      B      D
P1 ABC 1 2 0
P1 DEF 0 0 0
P1 GHI 0 0 1
P1 THE 0 0 0
P1 FGE 0 1 0
P1 REF 0 0 0
P1 XYZ 0 0 0
P2 ABC 0 1 0
P2 DEF 0 1 0
P2 GHI 0 0 2
P2 THE 0 0 0
P2 FGE 0 0 0
P2 REF 0 0 0
P2 XYZ 0 0 0
P3 ABC 1 0 0
P3 DEF 2 0 0
P3 GHI 0 0 1
P3 THE 0 0 0
P3 FGE 0 0 0
P3 REF 0 0 0
P3 XYZ 0 0 0
P4 ABC 0 0 0
P4 DEF 0 0 0
P4 GHI 0 0 0
P4 THE 0 0 1
P4 FGE 0 0 0
P4 REF 1 0 0
P4 XYZ 0 0 0

我不确定开始使用哪些命令。在正确方向上的任何帮助将不胜感激。

最佳答案

如果类别数量固定,可以简单地使用条件聚合。

select tplant.plantid,ttype.type,
count(case when t.category='A' then t.plant end) A,
count(case when t.category='B' then t.plant end) B,
count(case when t.category='D' then t.plant end) D
from (select distinct type from typetable) ttype --replace typetable with the table that has all the types
cross join (select distinct plantid from tablename) tplant
left join tablename t on t.plantid=tplant.plantid and t.type=ttype.type
group by tplant.plantid,ttype.type

关于sql - 在 SQL 中汇总表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40953533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com