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

Откуда:
Сообщений: 117
Имеется таблица вида
Трусы    | 5 | Красные
Носки    | 3 | Зеленые
Трусы    | 1 | Черные
Валенки  | 6 | Белые
Носки    | 9 | Серые
Неободимо выбрать записи с уникальным значением поля 1 и максимальным значением поля 2 т.е. в итоге должно получиться:
Трусы    | 5 | Красные
Носки    | 9 | Серые
Валенки  | 6 | Белые
25 июн 09, 12:35    [7342229]     Ответить | Цитировать Сообщить модератору
 Re: Помогите новичку с запросом  [new]
linke
Member

Откуда: Питер
Сообщений: 1401
ключивые слова : having, distinct, count, max
25 июн 09, 12:39    [7342259]     Ответить | Цитировать Сообщить модератору
 Re: Помогите новичку с запросом  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Попробуйте выбрать записи для которых NOT EXISTS (select записи с бОльшим значением поля 2 и тем же значением поля 1)

Если, конечно, максимальных значений не более одного на каждые носки и трусы, иначе задача описана не полностью...
25 июн 09, 12:42    [7342276]     Ответить | Цитировать Сообщить модератору
 Re: Помогите новичку с запросом  [new]
Michael_N
Member

Откуда: Белокуриха, АК
Сообщений: 150
Leshiy3
Имеется таблица вида
Трусы    | 5 | Красные
Носки    | 3 | Зеленые
Трусы    | 1 | Черные
Валенки  | 6 | Белые
Носки    | 9 | Серые
Неободимо выбрать записи с уникальным значением поля 1 и максимальным значением поля 2 т.е. в итоге должно получиться:
Трусы    | 5 | Красные
Носки    | 9 | Серые
Валенки  | 6 | Белые


select Name, ID, Color 
from 
  Table t
  inner join ( select Name, Id = Max(Id) from Table group by Name ) tm
    on tm.Name = t.Name and tm.Id = t.Id
25 июн 09, 12:49    [7342338]     Ответить | Цитировать Сообщить модератору
 Re: Помогите новичку с запросом  [new]
Michael_N
Member

Откуда: Белокуриха, АК
Сообщений: 150
[ОФФ] Паганель, Вы всегда одним из первым отвечаете? :-) [\ОФФ]
25 июн 09, 12:52    [7342351]     Ответить | Цитировать Сообщить модератору
 Re: Помогите новичку с запросом  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Michael_N, Ваш запрос не выдаст требуемое автору "уникальным значением поля 1"
в случае "нескольких максимумов"
Но виноват в этом автор, т.к. он не указал, возможен ли случай "нескольких максимумов",
и если возможен, то что тогда требуется

+ offtop
Нет, не всегда, иногда просто наблюдаю
Особенно (мне) нравится наблюдать за темами типа "помогите оптимизировать запрос"
вот где творчество так уж творчество
25 июн 09, 13:04    [7342451]     Ответить | Цитировать Сообщить модератору
 Re: Помогите новичку с запросом  [new]
Michael_N
Member

Откуда: Белокуриха, АК
Сообщений: 150
Паганель
Michael_N, Ваш запрос не выдаст требуемое автору "уникальным значением поля 1"
в случае "нескольких максимумов"
Но виноват в этом автор, т.к. он не указал, возможен ли случай "нескольких максимумов",
и если возможен, то что тогда требуется

+
+ offtop
Нет, не всегда, иногда просто наблюдаю
Особенно (мне) нравится наблюдать за темами типа "помогите оптимизировать запрос"
вот где творчество так уж творчество


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

+
+ offtop
Завидую Вам. Если работа позволяет регулярно мониторить SQL.ru, да еще и, как правило, давать развернутые ответы с кодом, додуманным за автора... Как бы устроиться на такую же...:-) Рискну угадать: БД админ?
25 июн 09, 13:13    [7342529]     Ответить | Цитировать Сообщить модератору
 Re: Помогите новичку с запросом  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
последний раз, все равно автор пропал куда-то...
+ offtop-ответ
нет, разработчик
просто не бывает полной 8-часовой загрузки,
то проект пересобирается, то исходники с системой контроля версий туда-сюда синхронизируются,
бывают и "субъективные факторы"
в общем, выкроить время получается, особенно после того как прекратил курить (спасибо табексу)

все, больше оффтопить не буду, дабы не нарываться на предупреждения модераторов
25 июн 09, 13:26    [7342624]     Ответить | Цитировать Сообщить модератору
 Re: Помогите новичку с запросом  [new]
iiyama
Member

Откуда:
Сообщений: 642
declare @t table(name nvarchar(100), id int, color nvarchar(100))
insert into @t
select 'Трусы', 5 ,'Красные'
union all
select 'Носки',3 ,'Зеленые'
union all
select 'Трусы' , 1 , 'Черные'
union all
select 'Валенки', 6, 'Белые'
union all
select 'Носки', 9, 'Серые'
union all
select 'Трусы', 5, 'Самые краснейшие'


select top 1 with ties *
from @t
order by row_number() over(partition by [name] order by [id] desc)
25 июн 09, 14:01    [7342945]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить