Сделайте сравнение и запрос SQL - PullRequest
0 голосов
/ 04 мая 2018

Я получил две таблицы, которые определены ниже:

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
Секс - это символ и может быть только «F» или «M».

Я хочу сделать запрос, который дает мне все STATE.name для данного YEAR, данного 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')

1 Ответ

0 голосов
/ 04 мая 2018

как то так

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

По вашему требованию:

все STATE.name для данного ГОДА, данного УРОВНЯ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...