Выбор данных с подсчетом их количества

SQL во всех проявлениях - от ANSI-92 до TSQL.

Модераторы: Yurich, Absurd

Ответить
Kolinus
Сообщения: 449
Зарегистрирован: 23 авг 2004, 14:02
Откуда: Минск

Добрый день.
Дано: таблица таблица1 в которой есть много полей, но интересуют следующие - имя, дата модификации, идентификатор.

идентификатор - уникален, имя может быть не уникально.

Необходимо:
выбрать из таблицы идентификаторы, тех элементов которые для каждого имени были последний раз модифицированы с указанием числа таких имен в таблице.
ТО есть
1 имя1 13.02.03
2 имя2 13.02.03
3 имя1 12.02.03
4 имя2 15.02.03
5 имя3 16.02.03

запрос должен вернуть
1 2
4 2
5 1

реально ли это сделать одним запросом, или необходимо два и результаты сопоставлять в коде?

Заранее спасибо.

P.S. если кого-то интересует смысл такого извращения, то ответ прост - необходимо показать последние элементы для каждого имени, при этом показав особую иконку если еще имеются элементы с таким же именем.
В SAD - все в SAD.
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

не очень я понял идентификатором *чего* является первое число... похоже на ID записи
Изображение
Kolinus
Сообщения: 449
Зарегистрирован: 23 авг 2004, 14:02
Откуда: Минск

вообще - идентификатор записи
В SAD - все в SAD.
alexx
Сообщения: 116
Зарегистрирован: 02 июл 2004, 22:29
Откуда: Hamburg

B тaком дyxe:

Код: Выделить всё

select max(id), imja, count(date) from your_table
дoлжнo cpaбoтaть
-------------
Лень - двигатель прогресса!
Аватара пользователя
AiK
Сообщения: 2287
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

Код: Выделить всё

select 
    row_id,
    (select count(*) from tmp t3 where t3.row_name = t1.row_name) as cnt
from 
    tmp as t1
where
    t1.date1 in (select max(t2.date1) from tmp t2 where t2.row_name =t1.row_name)
Даже самый дурацкий замысел можно воплотить мастерски
Kolinus
Сообщения: 449
Зарегистрирован: 23 авг 2004, 14:02
Откуда: Минск

Aik огромное спасибо.
Сразу тогда еще один вопрос - какую книгу по SQL посоветуешь - сколько по инету ни шарился нигде в доках не видел что можно вот так вот вставлять еще и селект :( , потому как все кроме подсчета заимплементил сам за протекшее время.
В SAD - все в SAD.
Аватара пользователя
AiK
Сообщения: 2287
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

Гм. Так вот сразу и не посоветую. Первая книжка по ANSI SQL была Маслова. Там есс-но таких наворотов не было.
Дальше учился у старших товарищей и по книгам SyBooks и Books Online (обе доступны через и-нет, вторая, кажется полностью продублирована в MSDN). Там очень много примеров всяких. Соответствующие разделы называются nested [sub]queries. Для подготовки к экзамену использовал книжки серии Официальный тест от издательства Питер и Реализация баз данных от Microsoft Press (соответственно для экзамена 70-029 MS SQL Server 7.0 Database Development & Maintenance). Обе книжки русские, но, если честно, скорее расчитаны для расширения кругозора для успешной сдачи экзамена, чем для решения практических задач. А больше всего понравилась книга, под названием что-то вроде MS SQL Server Administrator Survival Guide. Огромный талмуд на английском языке. Там есть всё, хотя есс-но чуть больший уклон сделан в сторону тюнинга сервера.
Даже самый дурацкий замысел можно воплотить мастерски
Ответить