为什么它说列定义不明确?

Why does it say column ambiguously defined?

select a.id_progdi, a.nama_progdi, avg(b.ipk)  
from tb_ipk b 
join tb_mahasiswa c on b.nim = c.nim 
join tb_progdi a on c.id_progdi = a.id_progdi  
group by id_progdi

您有多个 id_progdi,所以它可能不知道在 group by 中引用哪一个。将其更改为 group by a.id_progdi

在您的分组依据中,您应该添加 table 别名,因为您在多个 table 中具有相同的列名,并且数据库引擎需要知道您要引用的位置

    select a.id_progdi, a.nama_progdi, avg(b.ipk)  
    from tb_ipk b
    join  tb_mahasiswa c  on b.nim = c.nim 
    join tb_progdi a on c.id_progdi = a.id_progdi  
    group by a.id_progdi, a.nama_progdi

也许您有多个 table 中的 id_progdi 在您的组中使用 table 别名。