SQL-запрос - как получить строки, равные 1, по функции count - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть эта таблица:

Job(j_no,position,company,salary);

, и я хочу получить все позиции, которые предлагает только одна компания.То, что я пытался сделать, было:

SELECT position, COUNT(*) AS total FROM (SELECT * FROM Job) GROUP BY 
position;

, и я получаю, например:

  **position          / total**
  Director          |   1
  Draw              |   1
  Software Engineer |   2
  electrician       |   2

, как я могу вернуть только позицию, которая имеет 1 всего?

я пытаюсь сделать:

 SELECT position, COUNT(*) AS total FROM (SELECT * FROM Job) GROUP BY 
 position WHERE total=1;

но я получаю ошибку.

Буду признателен за помощь, спасибо.

Ответы [ 2 ]

0 голосов
/ 23 февраля 2019

Я хочу получить все позиции, которые предлагает только одна компания.

Если вы конкретно хотите, чтобы позиции были только в одной компании , то это не то место, гдеtotal равно 1. В одной компании может быть несколько строк для одной и той же позиции.Итак:

SELECT position, COUNT(*) AS total
FROM Job
GROUP BY position
HAVING MIN(company) = MAX(company);

Если вы хотели получить подробную информацию о таких позициях, один метод `не существует:

select j.*
from job j
where not exists (select 1
                  from job j2
                  where j2.position = j.position and j2.company <> j.cmopany
                 )
0 голосов
/ 23 февраля 2019

Изменить WHERE с HAVING:

SELECT position, COUNT(*) AS total 
FROM Job 
GROUP BY position 
HAVING total = 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...