Как посчитать повторяющиеся записи в столбце - PullRequest
0 голосов
/ 08 ноября 2011

У меня есть две таблицы:

Поставщик:

 PROV_NO      P_NAME
----------  ---------- 
  P10         ANTEL
  P20         BCORP
  P30         CBIZ

Услуги:

S_TYPE  PROV_NO   R_PRICE
------- -------- ---------
  1      P10       160
  2      P10       180
  3      P10       110
  1      P20       190
  2      P20       180
  3      P20       150
  4      P20       240      
  5      P20       195
  1      P30       190
  2      P30       210

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

 P_NAME     COUNT
---------  --------
 ANTEL        3
 BCORP        5
 CBIZ         2

Моя попытка:

select provider.p_name, count(distinct service.prov_no)
from provider,service
group by provider.p_name

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

Спасибо.

Ответы [ 3 ]

2 голосов
/ 08 ноября 2011

Попробуйте:

select p.p_name, count(*)
from provider p
join service s on p.prov_no = s.prov_no
group by provider.p_name

Измените join на left join, если хотите включить поставщиков без услуг.

2 голосов
/ 08 ноября 2011

Вам не хватает условия соединения, и вам нужно сбросить distinct:

select provider.p_name, count(*)
from provider,service
where provider.prov_no = service.prov_no
group by provider.p_name
0 голосов
/ 08 ноября 2011

В вашем запросе должно быть условие соединения

select provider.p_name, count(distinct service.prov_no) 
from provider join service on provider.prov_no=service.prov_no
group by provider.p_name 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...