Nano Hash - криптовалюты, майнинг, программирование

Выберите второе по величине значение для каждого отдельного внешнего ключа

Итак, у меня есть две таблицы, учетная запись и счет-фактура, они связаны первичным ключом из таблицы учетных записей, т.е. аккаунт.ключ и счет-фактура.ключ.

Я хочу выбрать account.accountnumber, invoice.invoicedate, invoice.invoiceamount для второй последней даты выставления счета из каждой учетной записи.

Любые идеи?

Итак, чтобы выбрать все счета и соответствующие им номера счетов:

select a.accountnumber, i.invoicedate, i.invoiceamount
from account a
join invoice i on (a.key = i.key)

И чтобы выбрать второй последний счет из всей таблицы счетов:

select MAX(invoicedate) from INVOICE i where invoicedate NOT IN (SELECT MAX(invoicedate) from i

Но как мне получить второй последний счет для каждой учетной записи из таблицы счетов вместе с номером счета из таблицы счетов?

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


Ответы:


1

С помощью оконной функции ROW_NUMBER(). ..

select accountnumber, invoicedate, invoiceamount 
from 
(
    select a.accountnumber, i.invoicedate, i.invoiceamount, 
        row_number() over (partition by a.accountnumber order by invoicedate desc) rn
    from account a 
        join invoice i on a.[key] = i.[key]
) v
where rn = 2
05.10.2012

2

попробуйте использовать это:

select a.accountnumber, i.invoicedate, i.invoiceamount 
from account a 
join invoice i on a.[key] = i.[key]
and i.invoicedate in
(select max(invoicedate) as secondmaxdate from invoice where invoicedate not in
(select max(invoicedate) as maxdate from invoice group by [key])
group by [key])
05.10.2012
  • Это не только слишком запутанно, но и не будет работать, если в счетах-фактурах указаны общие даты. 05.10.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..