2014-02-21 10 views
1

Например, если у меня есть таблица видеодисков людей, находящихся в собственности, как этотЧто такое утверждение для подсчета уникальных значений в таблице?

OWNER    TITLE 
--------------------------------- 
Jennifer | Ghostbusters 
Jennifer | Jurassic Park 
Alex  | Titanic 
Jennifer | Aliens 
Jack  | Seinfeld 
Jack  | Baby's Day Out 
Alex  | Jurassic Park 

И я хотел, чтобы получить количество, сколько строк каждый владелец, как

Jennifer | 3 
Alex  | 2 
Jack  | 2 

Как бы я сделай это? Я знаю, как подсчитать, сколько ВЛАДЕЛЬЦЕВ там -, но не столько строк, сколько у каждого ВЛАДЕЛЬЦА. До сих пор я использовал несколько операторов - выберите владельца (отдельный владелец), создайте массив возвращаемых имен, затем выдайте «select count from table where owner = array [i]» для каждого элемента массива - но это не похоже на умный способ сделать это.

+1

Если вы уже знакомы с 'COUNT()' агрегат для _all rows_ , вам просто нужно добавить 'GROUP BY OWNER' для группировки за« OWNER ». –

+0

Что означает «уникальный», связанный с вашим вопросом? Может ли тот же титул владеть одним и тем же владельцем, и в тех случаях, когда вы хотите, чтобы заголовок учитывался только один раз? В ваших данных примера нет ситуаций, когда один и тот же владелец владеет 2+ копиями одного и того же фильма, поэтому неясно, действительно ли вам нужно определенное количество фильмов. –

ответ

2
select count(1) as COUNT,OWNER from DVDS group by OWNER 
2

Я думаю, что следующий запрос: select count (1) from dvds group by owner решил бы это. Предполагается, что dvds - это имя вашей таблицы.

2

Используйте функцию count и GROUP BY столбец, который вы хотите группировать.

SELECT OWNER, COUNT(*) 
FROM DVD 
GROUP BY OWNER 
0

Количество дисков DVD владельцем:

select owner, count(*) from dvd group by owner 

Количество уникальных дисков DVD владельцем:

select owner, count(*) 
    from (select distinct owner, title from dvd) x 
group by owner 
Смежные вопросы