Хобрук: Ваш путь к мастерству в программировании

SELECT Top(1), агрегатная функция с предложением Where

Хорошо, я гуглил и гуглил, и все еще не могу получить это.

По сути, в таблице, содержащей несколько сотен тысяч строк, один столбец имеет уникальный идентификатор (не PK и не совсем уникальный, но эй), а другой имеет числовые значения.

Уникальный идентификатор (UI) уникален только в этой таблице и является своего рода инкрементным, поскольку наибольшее число означает самую последнюю запись в таблице.

По сути, мне нужно разбить строки на соответствующие строки с помощью предложения WHERE, а затем получить самый последний пользовательский интерфейс этих строк вместе с СУММОЙ значений этих строк.

т. е. если пользовательский интерфейс равен 1, 3, 5, 7, 10, а соответствующие значения для агрегатной функции равны 100, 300, 500, 700 и 1000, мне нужно получить в качестве результата запроса пользовательский интерфейс 10, сумма 2600.

БД это SQL2000

Как мне этого добиться?


  • Я не понимаю вашего вопроса... Не могли бы вы подробнее рассказать о том, как на самом деле выглядит таблица и какие данные вы хотите извлечь? 06.06.2013
  • Похоже, greatest-n-per-group может привести к чему-то важному.. 06.06.2013
  • @Джон, хорошо, я попробую. В одном столбце таблицы записывается сумма в валюте, относящаяся к финансовой операции. В другом столбце записываются финансовые значения. Все транзакции записываются в одну и ту же таблицу, и каждой транзакции присваивается ссылочный номер, который увеличивается для каждой записанной финансовой операции. Таким образом, у вас может быть ссылка 1, значение 1000, описание текущей учетной записи, а следующая строка может быть ссылкой 1, значением -1000, описанием сберегательного счета. После нескольких из них необходим отчет. Идея состоит в том, чтобы суммировать значения на основе критериев и получить последний номер ссылки, чтобы установить точку отсечки. 06.06.2013
  • @John, чтобы попытаться уточнить дальше, можно использовать 2 отдельных запроса: 1.) SELECT SUM (значение столбца) как SumV FROM Table WHERE (пункт) 2.) SELECT TOP (1) ReferenceNo AS LastRecorded FROM Table WHERE (то же предложение) ЗАКАЗАТЬ ПО НОМЕРУ DESC. Мне нужно объединить 2 запроса, чтобы получить результат LastRecorded, SumV 06.06.2013

Ответы:


1

Похоже, все элементы в таблице нужно суммировать и вернуть с максимальным идентификатором. Будет ли это работать для вас?

Select Max(ID), Sum(Number) from TableName

ID будет именем столбца вашего уникального идентификатора. Число будет именем вашего столбца, содержащего числа. TableName — это имя вашей таблицы.

05.06.2013
  • это не все элементы в таблице, но некоторые элементы в таблице ограничены предложением where (которое может быть довольно длинным). Сценарий на самом деле относится к довольно большому пакету учетных записей, поэтому мне нужно было получить совокупные итоги, но также чтобы получить соответствующий уникальный ссылочный номер в качестве точки отсечки. Это означает, что в случае повторного запуска отчета в будущем простое добавление WHERE URN ‹= Recorded URN позволит воссоздать тот же отчет, исключая любые дальнейшие зарегистрированные транзакции, отвечающие тем же критериям. 06.06.2013
  • Не уверен, что использование MAX может работать, хотя я не думал об этом, но я бы предположил, что не так, как я ожидал бы получить несколько строк, а не просто сумму значений, соответствующих соответствующим критериям, и последний записанный ссылочный номер. 06.06.2013
  • Новые материалы

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

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

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

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..