对于每个部门视图,研究人员的姓名以及研究人员签订的合同数量,这些研究人员专门负责描述类型为'TypeA ='Grandi Aziende'的'importi'大于$ 100000和'aziende'合同
这是数据库描述:
DIPARTIMENTO(CodD*, NomeD, Settore-Scientifico, Università)
RICERCATORE(CodR*, Nome, Cognome, DataNascita, CodD, DataPresaServizio)
AZIENDA(CodA*, NomeA, TipoA, Citt`a, Settore-Industriale)
CONTRATTO-DI-RICERCA(CodR-ResponsabileScientifico*, CodA*, DataInizio*,
Durata, Importo)
这是我提出的查询:
SELECT Nome, Count(R1.CodR) AS 'Numero Contratti'
FROM RICERCATORE AS R1,DIPARTIMENTO AS D1
WHERE R1.CodD = D1.CodD
AND R1.CodR IN (SELECT R2.CodR
FROM RICERCATORE AS R2, CONTRATTO-DI-RICERCA AS C1
WHERE R2.CodR = C1.CodR-ResponsabileScientifico
AND R2.CodR NOT IN (SELECT C2.CodR-ResponsabileScientifico
FROM CONTRATTO-DI-RICERCA AS C2
WHERE C2.Importo <= 100000
OR C2.CodA IN (SELECT A1.CodA
FROM AZIENDA AS A1
WHERE A1.TipoA <>
'Grande Azienda')))
GROUP BY D1.CodD
这是正确的吗?有没有一种更简单的方式来制定查询?
答案 0 :(得分:0)
只需链接表并过滤掉不需要的内容。如果您的表中存在一对多关系,我将使用count(distinct)。
print(result.groupby(axis=1, level=0).get_group(0).columns.levels[1])