SQL比较两个select子句和分组总和

时间:2018-04-30 13:38:01

标签: python html sql

我目前正在大学开展一个项目,我在SQL中遇到了一个特定查询的问题。 tables

我正在尝试从DEPARTEMENTS中检索NOM列表,其中有更多的女性毕业于MEN,使用我们必须通过HTML表单输入的ANNEE(年份)和LABEL(级别)。

到目前为止,我有这个:

select distinct NOM from 
    DEPARTEMENTS as d1, 
    NB_DIPLOMES_DEPT as d2, 
    NIVEAUX_DIPLOMES as d3 
  where d1.NUM=d2.DEPT and d2.NIVEAU=d3.ID 
    and (select sum(num) 
  from NB_DIPLOMES_DEPT 
  where sexe='F') > 
    (select sum(num) from NB_DIPLOMES_DEPT where sexe='H') 
        and ANNEE='{0}' AND LABEL='{1}'".format(year,level)

但我不知道如何比较女性和男性的总和。

1 个答案:

答案 0 :(得分:0)

使用子查询时,请记住加入主FROM。否则你会得到意想不到的结果。

select NOM 
from DEPARTEMENTS as dep 
where (
    select sum(num)
    from NB_DIPLOMES_DEPT ndd
        , NIVEAUX_DIPLOMES nd
    where ndd.sexe='F'
        and ndd.DEPT = dep.NUM
        and ndd.ANNE = ?
        and ndd.NIVEAU = nd.ID
        and nd.LABEL = ?
) > (
    select sum(num) 
    from NB_DIPLOMES_DEPT 
    where sexe='H'
        and ndd.DEPT = dep.NUM
        and ndd.ANNE = ?
        and ndd.NIVEAU = nd.ID
        and nd.LABEL = ?
) 

在您的SQL中,您只能加入

DEPARTEMENTS as d1, 
NB_DIPLOMES_DEPT as d2, 
NIVEAUX_DIPLOMES as d3

子查询始终返回所有值