Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 простой запрос  [new]
quazare
Member

Откуда: Новосибирск
Сообщений: 480
Народ подскажите с запросом, точнее пните в нужную сторону:

Вообщем есть таблица MyTable из 3-х колонок Col1, Col2, Col3

В колонке Col3 есть куча повторяющиюся элементов
Количество различных элементов я могу определить вот так:

SELECT DISTINCT Col3 FROM MyTable

что добавить в запрос, чтобы подсчитать количество повторяющихся элементов
23 июл 09, 07:55    [7448624]     Ответить | Цитировать Сообщить модератору
 Re: простой запрос  [new]
Ох...ий программизд
Guest
quazare,

если повторяющихся, то так:
select
 col3,
 count(col3)
from
 MyTable
group by
 col3
having
 count(col3) > 1

Оно? Я правильно понял вопрос?
23 июл 09, 08:03    [7448628]     Ответить | Цитировать Сообщить модератору
 Re: простой запрос  [new]
Supra93
Member

Откуда:
Сообщений: 8174
GROUP BY (Transact-SQL) HAVING (Transact-SQL)
COUNT (Transact-SQL) > (Greater Than) (Transact-SQL)
23 июл 09, 08:04    [7448630]     Ответить | Цитировать Сообщить модератору
 Re: простой запрос  [new]
quazare
Member

Откуда: Новосибирск
Сообщений: 480
да спасибо... так having вот так только сount(col3)>=1
23 июл 09, 08:07    [7448633]     Ответить | Цитировать Сообщить модератору
 Re: простой запрос  [new]
Ох...ий программизд
Guest
quazare
да спасибо... так having вот так только сount(col3)>=1


Вы же просили повторяющиеся.
Если не надо, то здесь сount(col3)>=1 не имеет смысла в having'е.

Тогда так:
select
 col3,
 count(col3)
from
 MyTable
group by
 col3
23 июл 09, 08:12    [7448643]     Ответить | Цитировать Сообщить модератору
 Re: простой запрос  [new]
quazare
Member

Откуда: Новосибирск
Сообщений: 480
а чтобы сделать это вложенным запросом - объединяем его в скобки (...) as newtable? - так?
23 июл 09, 08:19    [7448652]     Ответить | Цитировать Сообщить модератору
 Re: простой запрос  [new]
Ох...ий программизд
Guest
quazare
а чтобы сделать это вложенным запросом - объединяем его в скобки (...) as newtable? - так?

ну типа того... смотря чего вы хотите.
23 июл 09, 08:22    [7448654]     Ответить | Цитировать Сообщить модератору
 Re: простой запрос  [new]
quazare
Member

Откуда: Новосибирск
Сообщений: 480
А можно любой примерчик с вложенным запросом через псевдоним. т.е. я на основе первого запроса формирую таблицу данных (Col1, Col3, count(Col3)) as NewTable, а потом например
хочу сложить столбцы в новой таблице

вот так

SELECT NewTable.sum(Col1) FROM (.выбираю строки Col1, Col3, count(Col3) AS chetchik...) AS NewTable

типа такого что-то...
23 июл 09, 08:26    [7448663]     Ответить | Цитировать Сообщить модератору
 Re: простой запрос  [new]
Supra93
Member

Откуда:
Сообщений: 8174
FROM (Transact-SQL)
пример I
откройте справку для себя
23 июл 09, 08:33    [7448672]     Ответить | Цитировать Сообщить модератору
 Re: простой запрос  [new]
Ох...ий программизд
Guest
вот это
quazare

(.выбираю строки Col1, Col3, count(Col3) AS chetchik...)

не соответствует вашему первоначальному вопросу.

Вы можете сформулировать задачу полностью - с созданием таблиц, с тестовыми данными?
23 июл 09, 08:33    [7448673]     Ответить | Цитировать Сообщить модератору
 Re: простой запрос  [new]
quazare
Member

Откуда: Новосибирск
Сообщений: 480
что-то типа такого тогда:

SELECT NewTable.col1 WHERE
(SELECT col1, col3, count(col3) FROM MyTable GROUP BY col3) As NewTable

В общем случае нужно обработать (например сложить) данные из полученной таблицы в первом запросе...
23 июл 09, 08:48    [7448691]     Ответить | Цитировать Сообщить модератору
 Re: простой запрос  [new]
quazare
Member

Откуда: Новосибирск
Сообщений: 480
SELECT NewTable.col1 FROM (SELECT col1, col3, count(col3) FROM MyTable GROUP BY col3) As NewTable
23 июл 09, 08:57    [7448711]     Ответить | Цитировать Сообщить модератору
 Re: простой запрос  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
quazare
SELECT NewTable.col1 FROM (SELECT col1, col3, count(col3) FROM MyTable GROUP BY col3) As NewTable
И это работает? А GROUP BY col1 в производной таблице куда делось?
23 июл 09, 09:04    [7448734]     Ответить | Цитировать Сообщить модератору
 Re: простой запрос  [new]
Ох...ий программизд
Guest
quazare
(SELECT col1, col3, count(col3) FROM MyTable GROUP BY col3)

???!!!
23 июл 09, 09:22    [7448819]     Ответить | Цитировать Сообщить модератору
 Re: простой запрос  [new]
vino
Member

Откуда:
Сообщений: 1191
quazare
...что добавить в запрос, чтобы подсчитать количество повторяющихся элементов
В первом же ответе была истина, зачем городить еще. Если надо найти все col1, которые среди повторов, то так и делайте

SELECT col1 FROM MyTable WHERE col3 in
  (SELECT col3 FROM MyTable GROUP BY col3 HAVING count(col3) > 1
23 июл 09, 12:38    [7450284]     Ответить | Цитировать Сообщить модератору
 Re: простой запрос  [new]
vino
Member

Откуда:
Сообщений: 1191
SELECT col1 FROM MyTable WHERE col3 in
  (SELECT col3 FROM MyTable GROUP BY col3 HAVING count(col3) > 1)
23 июл 09, 12:39    [7450292]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить