与 SQL 请求进行比较

Make comparison un SQL request

我有两个表,定义如下:

STATE(NAME varchar,
      POSTALCODE char) 

NB_PRISONERS_STATE(AGE int,
                   SEX char(1), 
                   POSTAL_CODE char, 
                   YEAR integer, 
                   NB integer,
                   LEVEL integer)

这两个表可以链接STATE.postalcode=NB_PRISONERS_STATE.POSTAL_CODE

年龄为整数,只能为1、2或3
级别是整数,只能是1或2
Sex是char,只能是'F'或'M'。

我想提出一个请求,在给定的 YEAR 中给我所有 STATE.name,给定的 LEVEL 入狱的男性多于女性。

我试过了

Select STATE.name 
from STATE,NB_PRISONERS_STATE 
where STATE.postalcode=NB_PRISONERS_STATE.POSTAL_CODE 
CASE WHEN SUM(select NB_PRISONERS_STATE.nb where NB_PRISONERS_STATE.sexe='H')>SUM(select NB_PRISONERS_STATE.nb where NB_PRISONERS_STATE.sexe='F')

像这样

SELECT S.NAME
FROM NB_PRISONERS_STATE  P 
INNER JOIN STATE S ON P.POSTAL_CODE=S.POSTALCODE 
WHERE P.YEAR = 2017 AND P.LEVEL=1
GROUP BY S.NAME 
HAVING SUM(CASE WHEN P.SEX='M' THEN 1 ELSE 0 END) > SUM(CASE WHEN P.SEX='F' THEN 1 ELSE 0 END)

相应地改变这个:

WHERE P.YEAR = 2017 AND P.LEVEL=1

按照您的要求:

all the STATE.name for a given YEAR, a given LEVEL