SQL считает значение для каждой записи userID, за исключением случаев, когда одно значение записи userId равно x - PullRequest
0 голосов
/ 28 сентября 2018

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

Я пытаюсь создать запрос, который подсчитывает количество фруктов на userID, за исключениемидентификатор пользователя, в котором есть запись, где фрукты - это бананы.

+----------+--------+--------------+
| recordID | userId |    Fruit     |
+----------+--------+--------------+
|        0 |    112 | Apple        |
|        1 |    112 | Banana       |
|        2 |    112 | kiwi         |
|        - |      - | -            |
|        3 |    113 | Banana       |
|        4 |    113 | Pear         |
|        - |      - | -            |
|        5 |    114 | Dragon fruit |
|        6 |    114 | Pineapple    |
|        - |      - | -            |
|        7 |    115 | Dragon Fruit |
|        8 |    115 | Cherry       |
+----------+--------+--------------+

требуемый результат:

+-------+-------------+--+
| count |    fruit    |  |
+-------+-------------+--+
|     2 | dragonfruit |  |
|     1 | pineapple   |  |
|     1 | cherry      |  |
+-------+-------------+--+

игнорирование пользователя с идентификатором пользователя 113, поскольку в нем есть запись для фруктов со значением банана.

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Вам просто нужно условие фильтрации:

select fruit, count(*)
from t
where not exists (select 1
                  from t t2
                  where t2.userid = t.userid and t2.fruit = 'banana'
                 )
group by fruit
order by count(*) desc;
0 голосов
/ 28 сентября 2018

использовать not in и подзапрос

select count(*),fruit from
(
select * from t where userid not in(

select userId from t where Fruit='Banana'
)
) t1 group by fruit
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...