Estou executando esta consulta para obter todos os retornos de uma lista de tickers:
select return1
from STOCK_DATA
where TDATE between 20130101 and 20131231
and TICKER in (SELECT DISTINCT TICKER FROM STOCK_DATA)
No entanto, ele empilha todos os retornos dos tickers em uma coluna, mas eu gostaria de ter uma tabela com colunas return1 para cada ticker?
Talvez você precise executar isso como uma
GROUP BY
agregação usando a função GROUP_CONCAT .ADVERTÊNCIA Nº 1
Em sua sessão de banco de dados, pode ser necessário estender o comprimento da saída [ GROUP_CONCAT } porque seu limite padrão é 1024 . Execute isso antes de cada conexão para definir o limite para 1M:
ADVERTÊNCIA Nº 2
A consulta acima fornecerá apenas ticker_returns se o símbolo da ação foi negociado com o intervalo TDATE especificado. Se você deseja que todos os tickers apareçam, independentemente de terem ou não retornos no intervalo TDATE especificado, faça o seguinte:
Se você quiser uma contagem para cada TICKER, basta contar o número de vírgulas no ticker_returns e adicionar 1 se o ticker_turns não for nulo. Se você deseja uma consulta com a contagem de cada ticker, faça o seguinte:
DE UMA CHANCE !!!
Para aumentar o desempenho da consulta, crie este índice durante seu horário de folga:
Isso deve acelerar a consulta.