【问题标题】:How can I ask this query in SQL?如何在 SQL 中查询此查询?
【发布时间】:2019-09-22 02:33:44
【问题描述】:

对于每个部门,查看研究人员的姓名以及专门负责“importi”大于 100000 美元和“aziende”且描述符类型为“TypeA = 'Grandi 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

这是正确的吗?有没有更简单的方法来制定查询?

【问题讨论】:

    标签: jquery mysql sql database oracle


    【解决方案1】:

    只需链接表格并过滤掉您不想要的内容。我使用 count(distinct) 以防您的表中存在一对多关系。

    SELECT r.Nome, Count(Distinct r.CodR) 'Numero Contratti'
    FROM CONTRATTO-DI-RICERCA c
    INNER JOIN RICERCATORE r ON c.CodR-ResponsabileScientifico=r.CodR
    INNER JOIN AZIENDA a ON c.CodA=a.CodA
    INNER JOIN DIPARTIMENTO d ON r.CodD=d.CodD
    WHERE c.Implorto > 100000
    AND a.TipoA='Grande Azienda'
    GROUP BY r.Nome
    

    【讨论】:

    • 好的,但是排他性没有问题吗?这意味着可能有研究人员的名字也与“Importo
    • c.Importo>100000 将过滤掉任何
    • 哦,所以加入确保我有严格只与该 importo>100000 签订合同的人。谢谢!
    猜你喜欢
    • 2021-01-15
    • 1970-01-01
    • 2021-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多