与 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
我有两个表,定义如下:
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