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

Операторы PL SQL SELECT Case, включающие совокупные значения

Я пытаюсь написать запрос в Teradata, но не знаю, как это сделать; моя таблица выглядит так:

столбец 1: текст (номер счета) столбец 2: текст (номер дополнительного счета) столбец 3: текст (первичный_заказ)

бизнес-требования таковы: «Группировать записи по номеру учетной записи. Если для учетной записи существует только одна запись, сохраните эту запись. Если для номера учетной записи существует несколько записей, то: (1) если только одна запись имеет Primary_CUST = 'Y' (2) если у нескольких записей Primary_CUST = 'Y', оставьте одну с наименьшим SCDRY_ACCT_NBR (3) Если нет записей с Primary_CUST = 'Y', оставьте одну с наименьшим SCDRY_ACCT_NBR.

Я знаю, что мне нужен оператор CASE, и я могу написать первое требование, но не уверен во втором. Любая помощь будет принята с благодарностью.

01.02.2017

Ответы:


1

Вам просто нужно подумать о том, как упорядочить строки, чтобы получить нужную строку сверху, похоже, так:

SELECT * FROM tab
QUALIFY
   Row_Number() 
   Over (PARTITION BY account_number   -- for each account
         ORDER BY Primary_CUST DESC    -- 'Y' before 'N' (assuming it's a Y/N column)
                 ,SCDRY_ACCT_NBR       -- lowest number
        ) = 1                          -- return the top row

Конечно, QUALIFY является проприетарным синтаксисом Teradata, если вам нужно сделать это в Oracle, вы должны обернуть его в производную таблицу:

SELECT *
FROM
 (
   SELECT t.*,
      Row_Number() 
      Over (PARTITION BY account_number   -- for each account
            ORDER BY Primary_CUST DESC    -- 'Y' before 'N' (assuming it's a Y/N column)
                    ,SCDRY_ACCT_NBR) AS rn-- lowest number
   FROM tab 
 ) AS dt
WHERE rn = 1                              -- return the top row
01.02.2017
  • Потрясающий! Я даже не думал о разбиении - большое спасибо! 02.02.2017
  • Новые материалы

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

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

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

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

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

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

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