минимальное значение уникальных данных
От: syteser  
Дата: 07.06.22 12:36
Оценка:
Добрый день.

Помогите со следующей задачей.

СУБД — FB 2,5

Есть таблица с полями Имя, Дата, Балл
Вида

Сидоров 22.05.2022 5
Иванов 01.01.2022 5
Петров 02.03.2022 3
Иванов 02.05.2022 2
Иванов 12.03.2022 5
Сидоров 03.04.2022 1

Помогите составить запрос который вернет набор данных с уникальным Именем, Балом и последней Датой когда Бал был меньше Х.
То есть, при Х = 4:

Петров 02.03.2022 3
Иванов 02.05.2022 2
Сидоров 03.04.2022 1
Отредактировано 08.06.2022 11:27 syteser . Предыдущая версия . Еще …
Отредактировано 08.06.2022 11:03 syteser . Предыдущая версия .
Re: минимальное значение уникальных данных
От: Alex.Che  
Дата: 07.06.22 12:53
Оценка:
Здравствуйте, syteser, Вы писали:

S>Помогите составить запрос


а как не получилось?
Re[2]: минимальное значение уникальных данных
От: syteser  
Дата: 07.06.22 12:56
Оценка:
Здравствуйте, Alex.Che, Вы писали:

AC>Здравствуйте, syteser, Вы писали:


S>>Помогите составить запрос


AC>а как не получилось?


SELECT DISTINCT (name), date, MIN(ball) FROM mybase
Отредактировано 07.06.2022 12:58 syteser . Предыдущая версия .
Re[3]: минимальное значение уникальных данных
От: Bigger Российская Империя  
Дата: 07.06.22 14:06
Оценка: +1
Здравствуйте, syteser, Вы писали:

СУБД какое, и так точно не получится.
Надо через GROUP BY

Программист — это шаман..., подарите бубен!
Re[4]: минимальное значение уникальных данных
От: Буравчик Россия  
Дата: 07.06.22 14:57
Оценка:
Здравствуйте, Bigger, Вы писали:

B>Здравствуйте, syteser, Вы писали:


B>СУБД какое, и так точно не получится.

B>Надо через GROUP BY

Или использовать
ROW_NUMBER() OVER (PARTITION BY name ORDER BY mark) = 1
Best regards, Буравчик
Re[5]: минимальное значение уникальных данных
От: Alex.Che  
Дата: 07.06.22 15:19
Оценка:
Здравствуйте, Буравчик, Вы писали:

B>>Надо через GROUP BY


Б>Или использовать

Б>
Б>ROW_NUMBER() OVER (PARTITION BY name ORDER BY mark) = 1
Б>


сомневаюсь что препод оценит.
Re[4]: минимальное значение уникальных данных
От: syteser  
Дата: 07.06.22 15:45
Оценка:
Здравствуйте, Bigger, Вы писали:

B>Здравствуйте, syteser, Вы писали:


B>СУБД какое, и так точно не получится.

B>Надо через GROUP BY

Спасибо!
FB 2,5.
Я уже почти разобрался при помощи гугла.

SELECT name, MIN(ball) AS minball FROM mybase GROUP BY name ORDER BY minball DESC

Не удается добавит поле date...
Отредактировано 08.06.2022 11:03 syteser . Предыдущая версия . Еще …
Отредактировано 07.06.2022 15:48 syteser . Предыдущая версия .
Re[5]: минимальное значение уникальных данных
От: syteser  
Дата: 07.06.22 15:46
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>Здравствуйте, Bigger, Вы писали:


B>>Здравствуйте, syteser, Вы писали:


B>>СУБД какое, и так точно не получится.

B>>Надо через GROUP BY

Б>Или использовать

Б>
Б>ROW_NUMBER() OVER (PARTITION BY name ORDER BY mark) = 1
Б>


Спасибо. Это что-то очень серьезное у вас написано...
Re[5]: минимальное значение уникальных данных
От: paucity  
Дата: 07.06.22 15:59
Оценка:
Здравствуйте, syteser, Вы писали:

S>Не удается добавит поле date...


Все поля указанные в select должны быть в group by
Re[6]: минимальное значение уникальных данных
От: syteser  
Дата: 07.06.22 16:14
Оценка:
Здравствуйте, paucity, Вы писали:

P>Здравствуйте, syteser, Вы писали:


S>>Не удается добавит поле date...


P>Все поля указанные в select должны быть в group by


Я вас понял, спасибо!
Re[5]: минимальное значение уникальных данных
От: Alex.Che  
Дата: 07.06.22 16:18
Оценка:
Здравствуйте, syteser, Вы писали:

B>>СУБД какое, и так точно не получится.

B>>Надо через GROUP BY

S>FB.



тут зависит от версии.
Re[5]: минимальное значение уникальных данных
От: vsb Казахстан  
Дата: 07.06.22 16:21
Оценка:
Здравствуйте, syteser, Вы писали:

S>SELECT name, MIN(ball) AS minball FROM mybase GROUP BY name ORDER BY minball DESC


S>Не удается добавит поле date...


Тебе нужно использовать под-запрос.
Re[6]: минимальное значение уникальных данных
От: syteser  
Дата: 07.06.22 16:27
Оценка:
Здравствуйте, paucity, Вы писали:

P>Здравствуйте, syteser, Вы писали:


S>>Не удается добавит поле date...


P>Все поля указанные в select должны быть в group by


делаю
SELECT name, MIN(ball) AS minball, date FROM mybase GROUP BY name, date ORDER BY minball DESC

и количество записей становится как в исходной таблице.
Фамилии начинают повторяться
Re[6]: минимальное значение уникальных данных
От: syteser  
Дата: 07.06.22 17:41
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Здравствуйте, syteser, Вы писали:


S>>SELECT name, MIN(ball) AS minball FROM mybase GROUP BY name ORDER BY minball DESC


S>>Не удается добавит поле date...


vsb>Тебе нужно использовать под-запрос.


Я тоже так понял. Разбираюсь. Спасибо
Re[7]: минимальное значение уникальных данных
От: IZM  
Дата: 07.06.22 20:20
Оценка:
Oracle:
Select a.cName, Min(a.dDate) as dDate,a.nBall
from (select cName,  min(nBall) over (partition by cName) as MinBall, dDate, nBall from tb_test1) a
where a.minball=a.nball
group by a.cname,a.nball


При равных минимальных оценках берем минимальную дату

Еще проще:
select cName,  nBall, DDate 
from 
(select cName,  nBall, DDate, Row_number() over (partition by cName order by Cname ,Nball, Ddate) as NN from tb_test1) 
where NN=1
Отредактировано 07.06.2022 20:37 IZM . Предыдущая версия . Еще …
Отредактировано 07.06.2022 20:24 IZM . Предыдущая версия .
Re[8]: минимальное значение уникальных данных
От: syteser  
Дата: 08.06.22 03:18
Оценка:
Здравствуйте, IZM, Вы писали:

IZM>
IZM>select cName,  nBall, DDate 
IZM>from 
IZM>(select cName,  nBall, DDate, Row_number() over (partition by cName order by Cname ,Nball, Ddate) as NN from tb_test1) 
IZM>where NN=1
IZM>


Спасибо за помощь! Серьезный код. Пытаюсь разобраться.
Отредактировано 08.06.2022 3:45 syteser . Предыдущая версия .
Re[8]: минимальное значение уникальных данных
От: syteser  
Дата: 08.06.22 03:45
Оценка:
Здравствуйте, IZM, Вы писали:

IZM>
IZM>select cName,  nBall, DDate 
IZM>from 
IZM>(select cName,  nBall, DDate, Row_number() over (partition by cName order by Cname ,Nball, Ddate) as NN from tb_test1) 
IZM>where NN=1
IZM>


Query пишет — SQL error cod -104 с ссылкой на скобку после OVER
Отредактировано 08.06.2022 3:46 syteser . Предыдущая версия .
Re[9]: минимальное значение уникальных данных
От: Alex.Che  
Дата: 08.06.22 09:01
Оценка:
Здравствуйте, syteser, Вы писали:

S>Query пишет — SQL error cod -104 с ссылкой на скобку после OVER


никому не говори версию FB — пускай все угадывают.
Re[7]: минимальное значение уникальных данных
От: vsb Казахстан  
Дата: 08.06.22 09:33
Оценка:
Здравствуйте, syteser, Вы писали:

vsb>>Здравствуйте, syteser, Вы писали:


S>>>SELECT name, MIN(ball) AS minball FROM mybase GROUP BY name ORDER BY minball DESC


S>>>Не удается добавит поле date...


vsb>>Тебе нужно использовать под-запрос.


S>Я тоже так понял. Разбираюсь. Спасибо


Есть ещё не получилось, то примерно так будет максимально просто:

select b1.name,
       b1.ball,
       (select b2.date
        from mybase b2
        where b2.name = b1.name
          and b2.ball = b1.ball
        order by b2.date
        limit 1)
from (select name,
             min(ball) ball
      from mybase
      group by name
      order by name) b1
Re[10]: минимальное значение уникальных данных
От: syteser  
Дата: 08.06.22 11:02
Оценка:
Здравствуйте, Alex.Che, Вы писали:

AC>Здравствуйте, syteser, Вы писали:


S>>Query пишет — SQL error cod -104 с ссылкой на скобку после OVER


AC>никому не говори версию FB — пускай все угадывают.


Прошу прощения. FB 2.5
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.