Подсчет количества маскимальных значений группы

Pavel Tsushko
Дата: 19.02.2008 15:25:40
Никак не могу решить проблему...
Основная задача состоит в следующем:

Исходная таблица:

Name --- Number
Bob -------- 24
Bob -------- 24
Bob -------- 20
Nick -------- 23
Nick -------- 23
Nick -------- 18
Mike -------- 10

Запрос должен был выдать:

Name - Max number - Amount
Bob -------- 24 ------------ 2
Nick ------- 23 ------------ 2
Mike ------ 10 ------------ 1

Пробовал что-то типа:

SELECT Name, max(Number) as [Max number], count(*) as Amount FROM Table1 WHERE Number IN (SELECT max(Number) FROM Table1 GROUP BY Name) GROUP BY Name;

Но не выходит...
sdfgsdfgsdf
Дата: 19.02.2008 15:29:41
HAVING тебе поможет
Pavel Tsushko
Дата: 19.02.2008 15:33:40
Пробовал с HAVING не выходит... Ругается...
Код можешь хотя бы навскидку предложить?
mds_world
Дата: 19.02.2008 17:20:04
А что не устраивает в запросе? По вашим данным, вроде должен дать правильный ответ.
Pavel Tsushko
Дата: 19.02.2008 17:29:39
база большая...
проверял по значениям...
неправильно считает количество.
Допустим если у Боба такой набор значений:

Name -- Number
Bob ------- 19
Bob ------- 21
Bob ------- 20

Выдает

Name -- Max number -- Amount
Bob --------- 21 ---------- 2

не могу разобраться почему
Karfaqen
Дата: 19.02.2008 17:32:42
Автор, я вам вчера в первой вашей ветке дал вполне рабочее решение, которому вы предпочли иной (и неверный) вариант - именно тот на который вы сегодня жалуетесь в уже в новой ветке.
Pavel Tsushko
Дата: 19.02.2008 17:46:24
Да... вчера был не внимателен, предложил свою ошибку... но ваш запрос ругается на T1.COUNT(*)...
Karfaqen
Дата: 19.02.2008 17:53:01
Да понятно, омашка просто, откуда у функции COUNT алиас-то.
Уберите T1. , а в последний group By, наоборот, добавьте его.
Karfaqen
Дата: 19.02.2008 17:54:38
Вот, для ваших структур в ЭТОЙ ветке:
SELECT T1.name, Max(T1.number) AS max_number, COUNT(*) AS amount FROM table1 T1 
INNER JOIN (SELECT name, Max(number) AS max_number FROM table1 GROUP BY name) T2
ON T1.name=T2.name AND T1.number=T2.max_number 
GROUP BY T1.name
Pavel Tsushko
Дата: 19.02.2008 18:11:06
Да... был на 200% не прав... ваш запрос работает отлично... спасибо большое!