Сравните значения в одном столбце в одной таблице

Мой стол

Продукт (производитель, модель, тип)

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

Пример данных:

maker             model         type
-------------------------------------
 A                 123        computer
 B                 234         laptop
 B                 345         laptop
 C                 456         printer
 C                 543           PC

Ответ для приведенных выше выборочных данных: B и ноутбук, потому что производитель B производит только ноутбуки, а также более одной модели. Это не производитель A, потому что, хотя он производит продукт одного и того же типа, у него есть только одна модель.


person user1613360    schedule 21.02.2014    source источник


Ответы (2)


Это легко. Вы ищете создателей с количеством записей> 1 и количеством различных типов = 1:

select maker
from product
group by maker
having count(distinct type) = 1 and count(*) > 1;
person Thorsten Kettner    schedule 21.02.2014
comment
Я хочу, чтобы и производитель, и тип, если я включаю тип, показывает, что столбец «Product.type» недействителен в списке выбора, потому что он не содержится ни в агрегатной функции, ни в предложении GROUP BY. Если я добавлю тип в группу, результат становится неправильный. - person user1613360; 22.02.2014
comment
Поскольку вы выбираете производителей только с одним типом, вы можете выбрать min(type) или max(type) — что, конечно же, одно и то же — для отображения типа. - person Thorsten Kettner; 22.02.2014

Попробуй это :

SELECT maker 
FROM Product
GROUP BY maker, type
HAVING COUNT(1) > 1
person Rida BENHAMMANE    schedule 21.02.2014