2014-11-30 3 views
0

У меня есть следующие базы данных:выполнение запроса с использованием счета

Stocks (StockNo, код филиала, описание, количество, Units, Reorder, Цена, SuppCode)

Это образец данных содержащиеся в нем:

STOCKNO STOREC DESCRIPTION    QUANTITY UNITS REORDER PRICE SUPPCO 
------- ------ ----------------------- -------- ------ ------- ------- ------ 
    126 LEG Sealing wax     9 Box   5 7.99 S5 
    127 LEG Red binding ribbon   13 Roll  10 6.47 S5 
    128 LEG A3 cream notary paper   21 Ream  10 7.85 S5 
    129 LEG Coloured ink     22 Bottle  10 3.48 S4 

мне нужно сделать запрос для отображения поставщиков (suppcode), что предложение не менее 3 магазинов.

Это я то, что я до сих пор:

select suppcode, count(distinct storecode) as StoresSupplied 
from stocks 
group by suppcode 
having count(*) > 3 

Это дает следующие результаты

SUPPCO STORESSUPPLIED 
------ -------------- 
S3     4 
S4     3 
S2     3 
S1     1 

Проверьте всю таблицу результаты для S3, S4 и S2 являются правильными, но я не могу найти причина, по которой S1 существует. S1 появляется в таблице, снабжая 8 разных элементов, но только одному отдельному файлу-хранилищу.

+1

Что делать, если вы измените 'COUNT (*)> 3' для' подсчета (отличный код филиала)> 3 '? –

+0

'....... having счет (*)> 3'? –

+0

На стороне примечание предикат 'по крайней мере 3' эквивалентен'> = 3', а не '> 3' (более 3), что исключает поставщиков, которые поставляют 3 магазина. – jpw

ответ

1

Count(*) будет содержать Null строк, где count(distinct storecode) не будет. Попробуйте изменить как этот

select suppcode, count(distinct storecode) as StoresSupplied 
from stocks 
group by suppcode 
having count(distinct storecode) > 3 
+0

, который работал, thx – user2987377

0

Я хотел бы предложить вам просто использовать псевдоним из select:

select suppcode, count(distinct storecode) as StoresSupplied 
from stocks 
group by suppcode 
having StoresSupplied > 3; 
Смежные вопросы