MYSQL добавить max () - 1 к запросу

Ivo Nedyalkov спросил: 28 апреля 2018 в 08:53 в: sql

как добавить к запросу max (o.Acct) -1 строк. Мне нужно визуализировать последние две строки o.Acct. В моем запросе показывается только max (o.Acct)

SELECT Max(o.Acct) AS [MaxAcct],o.ObjectID,o.Opertype
FROM Operations o
GROUP By o.ObjectID,o.Opertype

2 ответа

Есть решение
MatBailie ответил: 28 апреля 2018 в 08:56

Если вы хотите увидеть последние две строки (для каждой группы) , вам лучше использовать ROW_NUMBER(), а не GROUP BY.

SELECT
  *
FROM
(
  SELECT
    *,
    ROW_NUMBER() OVER (PARTITION BY ObjectID,
                                    Opertype
                           ORDER BY Acct DESC
                      )
                         AS sequence_id
  FROM
    Operations
)
  sortedOperations
WHERE
  sequence_id <= 2
ORDER BY
  ObjectID,
  Opertype,
  Acct
Gordon Linoff ответил: 28 апреля 2018 в 08:55

Если вам нужны последние два из них, я думаю order by и top. Что-то вроде этого:

select top (2) o.*
from Operations o
order by o.acct desc;
MatBailie ответил: 28 апреля 2018 в 08:56
Хотя неясно, я думаю, что OP хочет две строки на "ObjectID / Opertype", а не только на две строки.