Published on

February 8, 2021

Исследование статистического анализа в SQL Server

Как разработчик T-SQL в аналитической команде, вы часто можете оказаться в ситуации, когда вам нужно выполнять статистический анализ данных, хранящихся в SQL Server. В этой статье мы рассмотрим пакет T-SQL Starter Statistics и предоставим дополнительные примеры, чтобы помочь вам подготовиться к проектам статистического анализа.

Пакет T-SQL Starter Statistics

Пакет T-SQL Starter Statistics – это набор хранимых процедур, которые могут использоваться для выполнения различных статистических методов. Каждая хранимая процедура предназначена для конкретного метода статистического анализа. Чтобы использовать пакет, просто заполните временную таблицу данными, которые вы хотите проанализировать, а затем вызовите соответствующую хранимую процедуру для генерации нужного вывода.

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

Пример: Вычисление медианы одной категории элементов

Начнем с примера вычисления медианы одной категории элементов. Медиана – это мера центральной тенденции, которая делит упорядоченный набор чисел на верхнюю и нижнюю половины. В SQL Server вы можете использовать функцию percentile_cont для поиска медианного значения для столбца значений в наборе результатов или таблице.

Вот пример скрипта, который создает хранимую процедуру с именем compute_overall_median для вычисления медианы одной категории элементов:

USE DataScience;

DROP PROCEDURE IF EXISTS dbo.compute_overall_median;

CREATE PROCEDURE dbo.compute_overall_median
AS
BEGIN
   SET NOCOUNT ON;

   SELECT DISTINCT
      PERCENTILE_CONT(.5) WITHIN GROUP (ORDER BY column_for_median) OVER(PARTITION BY category_value)
   FROM
   (
      SELECT 
          * 
         ,'overall' category_value 
      FROM ##table_for_overall_median
   ) for_median

   RETURN

END

В этом примере мы создаем временную таблицу с именем ##table_for_overall_median и заполняем ее данными, которые мы хотим проанализировать. Затем мы вызываем хранимую процедуру compute_overall_median для вычисления медианного значения для столбца column_for_median во временной таблице.

Пример: Вычисление медиан группы категорий

Теперь перейдем к примеру вычисления медиан группы категорий. Это полезно, когда у вас есть несколько категорий элементов, и вы хотите вычислить медиану для каждой категории отдельно.

Вот пример скрипта, который создает хранимую процедуру с именем compute_median_by_category для вычисления медиан группы категорий:

USE DataScience;

DROP PROCEDURE IF EXISTS compute_median_by_category;

CREATE PROCEDURE compute_median_by_category
AS
BEGIN
   SET NOCOUNT ON;

   SELECT 
      *
   FROM
   (
      SELECT 
         DISTINCT category,
         PERCENTILE_CONT(.5) WITHIN GROUP (ORDER BY column_for_median) OVER(PARTITION BY category) median_by_category
      FROM
      (
         SELECT 
            category,
            column_for_median 
         FROM ##table_for_median_by_category
      ) for_median_by_category
   ) for_median_by_category
   ORDER BY category

   RETURN

END

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

Пример: Загрузка исторических значений индексов

Помимо анализа данных, хранящихся в SQL Server, вам также может понадобиться загрузить данные из внешних источников для анализа. Давайте рассмотрим пример загрузки исторических значений индексов из Wall Street Journal.

Вот пример скрипта, который демонстрирует, как загрузить исторические значения индексов из Wall Street Journal и импортировать их в SQL Server:

USE DataScience;

-- Создание временных таблиц для значений индексов
DROP TABLE IF EXISTS #temp_ohlc_values_for_indexes;
CREATE TABLE #temp_ohlc_values_for_indexes (
   date DATE,
   [open] DECIMAL(19,4),
   high DECIMAL(19,4),
   low DECIMAL(19,4),
   [close] DECIMAL(19,4)
);

-- Создание временной таблицы для значений индексов с символом
DROP TABLE IF EXISTS #temp_ohlc_values_for_indexes_with_symbol;
CREATE TABLE #temp_ohlc_values_for_indexes_with_symbol (
   symbol NVARCHAR(10),
   date DATE,
   [open] DECIMAL(19,4),
   high DECIMAL(19,4),
   low DECIMAL(19,4),
   [close] DECIMAL(19,4)
);

-- Загрузка и импорт значений индексов для Dow Jones Industrial Average (DJI)
BULK INSERT #temp_ohlc_values_for_indexes
FROM 'C:\DataScienceSamples\ETF_Comps\DJI.csv'
WITH (
   FIELDTERMINATOR = ',',
   FIRSTROW = 2,
   ROWTERMINATOR = '0x0a'
);

INSERT INTO #temp_ohlc_values_for_indexes_with_symbol
SELECT 'DJI' AS symbol, *
FROM #temp_ohlc_values_for_indexes;

-- Загрузка и импорт значений индексов для Nasdaq 100 Index (NDX)
BULK INSERT #temp_ohlc_values_for_indexes
FROM 'C:\DataScienceSamples\ETF_Comps\NDX.csv'
WITH (
   FIELDTERMINATOR = ',',
   FIRSTROW = 2,
   ROWTERMINATOR = '0x0a'
);

INSERT INTO #temp_ohlc_values_for_indexes_with_symbol
SELECT 'NDX' AS symbol, *
FROM #temp_ohlc_values_for_indexes;

-- Загрузка и импорт значений индексов для S&P 500 Index (SPX)
BULK INSERT #temp_ohlc_values_for_indexes
FROM 'C:\DataScienceSamples\ETF_Comps\SPX.csv'
WITH (
   FIELDTERMINATOR = ',',
   FIRSTROW = 2,
   ROWTERMINATOR = '0x0a'
);

INSERT INTO #temp_ohlc_values_for_indexes_with_symbol
SELECT 'SPX' AS symbol, *
FROM #temp_ohlc_values_for_indexes;

-- Отображение импортированных значений индексов
SELECT *
FROM #temp_ohlc_values_for_indexes_with_symbol
ORDER BY symbol ASC, date DESC;

В этом примере мы создаем две временные таблицы: #temp_ohlc_values_for_indexes для хранения загруженных значений индексов и #temp_ohlc_values_for_indexes_with_symbol для хранения значений индексов с соответствующими символами.

Затем мы используем оператор BULK INSERT для импорта значений индексов из CSV-файлов во временные таблицы. Наконец, мы отображаем импортированные значения индексов.

Заключение

В этой статье мы исследовали различные методы статистического анализа в SQL Server. Мы обсудили, как вычислить медиану одной категории элементов, вычислить медианы группы категорий и загрузить исторические значения индексов для анализа. Эти примеры демонстрируют мощь и гибкость SQL Server для выполнения статистического анализа ваших данных.

Используя пакет T-SQL Starter Statistics и другие функции SQL Server, вы можете получить ценные инсайты из ваших данных и принимать обоснованные решения для вашей организации.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.