Справка по SQL-запросу (Да, я уже пробовал вложенный выбор) - PullRequest
0 голосов
/ 08 мая 2018

это скриншот базы данных, о которой я говорю

Итак, предположим, у меня есть база данных, полная людей с их идентификационными номерами, а также год, в который они сделали запись, плюс их любимое шоу в этом году. Годы всегда находятся в диапазоне 2014-2018, но не у каждого есть запись для каждого года. Как я могу подсчитать общее количество людей, у которых постоянно было то же самое шоу, что и их любимое шоу за все годы, для которых они были записаны.

Я пытался сделать вложенный выбор, но получал ошибку. Я проверил другие вопросы, связанные с SQL, здесь говорится о подсчете «изменений за годы», но ни один из этих ответов не совместим с моей базой данных, и решение не было перенесено.

Ответы [ 3 ]

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

Хммм. , , это получает людей, у которых есть только одно шоу:

select count(*)
from (select person
      from t
      group by person
      having min(show) = max(show)
     ) p;
0 голосов
/ 09 мая 2018

Вы можете сосчитать количество различных любимых шоу, которые кто-то имеет, и если это 1, то у них каждый раз был один и тот же фаворит.

SELECT COUNT(*)
FROM (SELECT 1
      FROM yourTable
      GROUP BY person_id
      HAVING COUNT(DISTINCT favorite_show) = 1) AS x
0 голосов
/ 08 мая 2018

Я думаю, вам нужно что-то вроде этого:

См. Мой SQLFiddle

select id, favorite_show, count(id) as total from people
group by id, favorite_show
having count(id) > 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...