Расчет смены лидеров по бейсбольной статистике в MSSQL - PullRequest
1 голос
/ 26 мая 2011

Представьте, что у меня есть таблица MSSQL 2005 (bbstats), которая обновляется еженедельно, показывая различные совокупные категории достижений бейсбола для команды

    week 1
Player       H  SO   HR
Sammy        7  11    2 
Ted         14   3    0 
Arthur       2  15    0
Zach         9  14    3

    week 2
Player       H  SO   HR
Sammy       12  16    4 
Ted         21   7    1 
Arthur       3  18    0
Zach        12  18    3

Я хочу выделить текстуально, где для каждого лидера произошли изменениякатегория, поэтому после недели 2 нечего было бы сообщать о попаданиях (H);Зак присоединился к Артуру с большинством аутов (SO) в 18 лет;и Сэмми - новый лидер в homeruns (HR) с 4

. Поэтому я хотел бы настроить процесс примерно так: а) сохранить прошлые данные (неделя 1) в виде таблицы bbstatsPrior, б) обновить bbstats дляновые результаты - мне не нужна помощь с) c) сравнить таблицы для игрока (ов со связями) с максимальным значением для каждого столбца и выплевывать только там, где они отличаются d) перейти к следующему столбцу и повторить

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

Спасибо


Отвечая на комментарии Бренца, я действительно после любых изменений в лидерах для каждой категории. Поэтому ябудет иметь что-то вроде

select top 1 with ties player 
from bbstatsPrior
order by H desc

и

select top 1 with ties player,H 
from bbstats
order by H desc

Затем я хочу сравнить игрока из каждого запроса (мне нужно сделать временные таблицы).Если они отличаются, я хочу вывести второй оператор выбора.Для категории H Тед является лидером `из обеих таблиц, но для других категорий есть изменения между неделями

. Затем я могу просмотреть столбцы, используя

    select name from sys.all_columns sc
 where sc.object_id=object_id('bbstats') and name <>'player'

1 Ответ

0 голосов
/ 26 мая 2011

Если количество характеристик меняется не часто, вы можете легко написать один запрос, чтобы получить эти данные.Присоединитесь к bbStats к bbStatsPrior, где bbstatsprior.week

Если статистика часто меняется, вы можете использовать динамический SQL, чтобы сделать это для всех столбцов, которые соответствуют определенному шаблону или находятся всписок столбцов на основе sys.columns для этой таблицы?

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

Это может помочь вам начать, но я бы порекомендовал опубликовать то, что вам нужно для достижения этой цели, и сообщество может помочь вам в этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...