text: -- Banco de dados para o projeto "Modelagem estoc�stica de vaz�es mensais"
  -- Nome do banco: modelagem_estocastica
  -- Versao 2.0
  
  CREATE DATABASE modelagem_estocastica;
  USE modelagem_estocastica;
  
  -- Tabelas relacionadas a cada Estacao
  
  /*	
  	Tabela "estacao": Guarda as informa��es referentes a uma estacao.
  	Atributos:
  		> idESTACAO: � o identificador �nico de cada estacao armazenada.
  		> codigo: � o c�digo da estacao.
  		> nome: � o nome da estacao.
  		> rio: � o nome do rio.
  		> anos: � o numero de anos da serie_historica 
  		> area_bacia: � a area da bacia.
  		> lat e lng: Correspondem a coordenada da estacao,isto �,latitude e longitude.
  		Visto que n�o ser�o feitos calculos com esses valores, foi escolhido o tipo
  		varchar.
  		
  */
   CREATE TABLE ESTACAO(
  	idESTACAO INT PRIMARY KEY AUTO_INCREMENT,
  	codigo INT NOT NULL UNIQUE,
  	nome VARCHAR(50) UNIQUE,
  	rio VARCHAR(50),
  	anos INT,
  	area_bacia DOUBLE,
  	lat VARCHAR(30),
  	lng VARCHAR(30)
   );
   
   /*
  	Tabela "vazao": Guarda o valor de cada vazao da serie historica.
  	Uma estacao possui uma anica serie historica, essa serie � uma
  	conjunto de vazoes. Assim temos que uma table estacao, possui uma
  	ou mais vazoes.
  	Atributos:
  		> idVAZAO: � o identificador �nico de cada vazao.
  		> valor: Armazena o valor da vazao.
  		> periodo: Armazena o periodo daquela vazao. Ao olhar algumas series historicas,
  		de estacoes diferentes vi diferentes formatos para esse campo. Encontrei
  		os seguintes formatos: 01/01/1964, jan-1934, 1, jan/1955 e por ai vai.
  		Por isso optei por deixa o mes e o ano no mesmo atributo chamado de 
  		perido, visto que n�o h� uma padroniza��o espec�fica para essa campo.
   
   */
   
   CREATE TABLE VAZAO(
  	idVAZAO INT PRIMARY KEY AUTO_INCREMENT,
  	valor DOUBLE NOT NULL,
  	periodo VARCHAR(20),
  	id_ESTACAO INT
   );
   
   -- Tabelas relacionadas aos resultados dos modelos estocasticos
   
   /*
  	TABELA SERIE_SINTETICA: ARMAZENA OS DADOS DE UMA SERIE_SINTETICA GERADA POR UM MODELO ESTOCASTICO.
  	modelo: nome do modelo estocastico que gerou a serie (pmix,arma)
  	anos: numero de anos da serie sintetica
  	lags: lags utilizados no modelo estocastico
  	metodo: metodo utilizado para a estima��o de parametros (ag, powell)
  	desagregado: especifica se a serie foi gerada por agrega��o ou desagrega��o
   */
   
   CREATE TABLE SERIE_SINTETICA(
  	idSERIE_SINTETICA INT PRIMARY KEY AUTO_INCREMENT,
  	modelo VARCHAR(20),
  	anos INT,
  	lags VARCHAR(20),
  	metodo VARCHAR(20),
  	register_date DATETIME NOT NULL UNIQUE,
  	id_ESTACAO INT NOT NULL
   );
   
   /*
  	TABELA SERIE: armazena o valor de uma vazao gerada sinteticamente.
  	O conjunto de linhas de "serie" � a serie sintica gerada pelo modelo estocastico.
  	jan,fev,...,dez: vaz�es sinteticas por mes
  	anual: soma das vazoes mensais
   */
   
   CREATE TABLE SERIE(
  	idMENSAL INT PRIMARY KEY AUTO_INCREMENT,
  	jan DOUBLE ,
  	fev DOUBLE ,
  	mar DOUBLE ,
  	abr DOUBLE ,
  	mai DOUBLE ,
  	jun DOUBLE ,
  	jul DOUBLE ,
  	ago DOUBLE ,
  	seb DOUBLE ,
  	oub DOUBLE ,
  	nov DOUBLE ,
  	dez DOUBLE ,
  	anual DOUBLE,
  	id_SERIE_SINTETICA INT,
  	id_DESAGREGADO INT
  	
   );
   
   /*
  	TABELA SERIE_ANUAL: armazena o valor de uma vazao de uma serie sintetica modelada na escala anual (ex: modelo arma)
  	O conjunto de linhas de "serie_anual" � a serie sintica gerada pelo modelo estocastico.
   */
   
   CREATE TABLE SERIE_ANUAL(
  	idANUAL INT PRIMARY KEY AUTO_INCREMENT,
  	anual DOUBLE,
  	id_SERIE_SINTETICA INT
   );
   
   /*
  	TABELA DESAGREGADO: ARMAZENA UMA SERIE SINTETICA DESAGREGADA
  	ATRIBUTOS:
  		>idDESAGREGADO: � o identificador de cada serie desagregada
  		>parametrico: especifica se � desagregado parametrico ou nao-parametrico
   */
   
   CREATE TABLE DESAGREGADO(
  	idDESAGREGADO INT PRIMARY KEY AUTO_INCREMENT,
  	parametrico ENUM('S','N') NOT NULL,
  	register_date DATETIME NOT NULL UNIQUE,
  	id_SERIE_SINTETICA INT NOT NULL
   );
   
   
   
   -- AS TABELAS ABAIXO SAO COMUNS AS TABELAS ESTACAO, DESAGREGADO E AGREGADO
   -- ELAS ESTAO RELACIONADAS A AVALIACOES ESTATISTICAS
   
   /*
  	Tabela "acf_mensal": Guarda o valor das autocorrela��es mensais.
  	Atributos:
  		> idACF_MENSAL: � o identificador �nico de cada acf_mensal.
  		> valor: Armazena o valor da acf.
  		> lag: Identifica o lag da acf em quest�o.
  		> mes: Identifica o mes da acf em quest�o. Ao observar algumas
  		tabelas com acf_mensal, vi algumas representando o mes como "v1",
  		outras pela sigla do mes como "jan". O ideal � que se padronize esse campo,
  		mas preferi deixar essa parte para escolha do usuario.
   */
   
   CREATE TABLE ACF_MENSAL(
  	idACF_MENSAL INT PRIMARY KEY AUTO_INCREMENT,
  	lags INT,
  	jan DOUBLE ,
  	fev DOUBLE ,
  	mar DOUBLE ,
  	abr DOUBLE ,
  	mai DOUBLE ,
  	jun DOUBLE ,
  	jul DOUBLE ,
  	ago DOUBLE ,
  	seb DOUBLE ,
  	oub DOUBLE ,
  	nov DOUBLE ,
  	dez DOUBLE ,
  	id_ESTACAO INT,
  	id_SERIE_SINTETICA INT,
  	id_DESAGREGADO INT
   );
   
  /*
  	Tabela "acf_anual": Guarda o valor das autocorrela��es mensais.
  	Atributos:
  		> idACF_ANUAL: � o identificador �nico de cada acf_anual.
  		> valor: Armazena o valor da acf.
  		> lag: Identifica o lag da acf em quest�o.
  */
   
    CREATE TABLE ACF_ANUAL(
  	idACF_ANUAL INT PRIMARY KEY AUTO_INCREMENT,
  	valor DOUBLE NOT NULL,
  	lags INT,
  	id_ESTACAO INT,
  	id_SERIE_SINTETICA INT,
  	id_DESAGREGADO INT
  	
   );
   
   /*
   
  	Tabela "HURST": Armazena o valor do expoente de Hurst
  	Atributos:
  		> idHURST: � o identificador unico de cada hurs
  		> Anual: possui o valor do hurst anual
  		> Mensak: posui o valor do hurst mensal
  		> mes: Identifica o mes do hurst em questao. o ideal � que esse campo
  		seja preenchido da seguinte forma: 
  		Ex: Supondo que o mes seja janeiro
  		mes = JAN ou mes = V1 ou mes = 1
   
   */
   
   CREATE TABLE HURST(
  	idHURST INT PRIMARY KEY AUTO_INCREMENT,
  	anual DOUBLE,
  	mensal DOUBLE,
  	id_ESTACAO INT,
  	id_SERIE_SINTETICA INT,
  	id_DESAGREGADO INT
   );
   
   /*
  	Tabela "AVALIACAO": Armazena as avalia��es estatisticas
  	Atributos:
  		> idAVALIACAO: � o identificador unico de cada avaliacao
  		> media: possui o valor da media da serie
  		> dp: possui o valor do desvio padrao da serie
  		> assimetria: possui o valor da assimetria da serie
  		> ind_kurt: possui o valor do indice kurt da serie
  		> coef_var: possui o valor do coeficiente de varia��o da serie
   */
   
   CREATE TABLE AVALIACAO(
  	idAVALIACAO INT PRIMARY KEY AUTO_INCREMENT,
  	mes VARCHAR(10),
  	media DOUBLE,
  	dp DOUBLE,
  	assimetria DOUBLE,
  	ind_kurt DOUBLE,
  	coef_var DOUBLE,
  	id_ESTACAO INT, 
  	id_SERIE_SINTETICA INT,
  	id_DESAGREGADO INT
   );
   
   /*
  	TABELA "VOLUME": ARMAZENA VOLUMES DE RESERVATORIOS DE REGULARIZA��O DE VAZOES
  	ATRIBUTOS:
  		> valor: � o valor do volume
   */
   
   CREATE TABLE VOLUME(
  	idVOLUME INT PRIMARY KEY AUTO_INCREMENT,
  	valor DOUBLE,
  	id_ESTACAO INT,
  	id_SERIE_SINTETICA INT,
  	id_DESAGREGADO INT
   );
   
   /*
  	TABELA "SOMA_RESIDUAL": ARMAZENA O VALOR DA SOMA RESIDUAL
  	ATRIBUTOS:
  		> valor: � o valor dA SOMA_RESIDUAL
   */
   
    CREATE TABLE SOMA_RESIDUAL(
  	idVOLUME INT PRIMARY KEY AUTO_INCREMENT,
  	valor DOUBLE,
  	id_ESTACAO INT,
  	id_SERIE_SINTETICA INT,
  	id_DESAGREGADO INT
   );
   
   -- FOREIGN KEYS : ESTABELECENDO RELA�OES ENTRE AS TABELAS
   
   -- TABLE VAZAO --
   ALTER TABLE VAZAO ADD CONSTRAINT FK_ESTACAO_VAZAO
   FOREIGN KEY (id_ESTACAO) REFERENCES ESTACAO(idESTACAO)
   ON UPDATE CASCADE
   ON DELETE CASCADE;
   
   -- TABLE SERIE --
   
   ALTER TABLE SERIE ADD CONSTRAINT FK_SERIE_SINTETICA_SERIE
   FOREIGN KEY (id_SERIE_SINTETICA) REFERENCES SERIE_SINTETICA(idSERIE_SINTETICA)
   ON UPDATE CASCADE
   ON DELETE CASCADE;
   
   ALTER TABLE SERIE ADD CONSTRAINT FK_DESAGREGADO_SERIE
   FOREIGN KEY (id_DESAGREGADO) REFERENCES DESAGREGADO(idDESAGREGADO)
   ON UPDATE CASCADE
   ON DELETE CASCADE;
   
   -- TABLE SERIE_ANUAL --
   
    ALTER TABLE SERIE_ANUAL ADD CONSTRAINT FK_SERIE_SINTETICA_SERIEANUAL
   FOREIGN KEY (id_SERIE_SINTETICA) REFERENCES SERIE_SINTETICA(idSERIE_SINTETICA)
   ON UPDATE CASCADE
   ON DELETE CASCADE;
   
  
    -- TABLE DESAGREGADO --
   
   ALTER TABLE DESAGREGADO ADD CONSTRAINT FK_SERIE_SINTETICA_DESAGREGADO
   FOREIGN KEY (id_SERIE_SINTETICA) REFERENCES SERIE_SINTETICA(idSERIE_SINTETICA)
   ON UPDATE CASCADE
   ON DELETE CASCADE;
   
   -- TABLE ACF_ANUAL --
   
   ALTER TABLE ACF_ANUAL ADD CONSTRAINT FK_ESTACAO_ACF_ANUAL
   FOREIGN KEY (id_ESTACAO) REFERENCES ESTACAO(idESTACAO)
   ON UPDATE CASCADE
   ON DELETE CASCADE;
   
   ALTER TABLE ACF_ANUAL ADD CONSTRAINT FK_SERIE_SINTETICA_ACF_ANUAL
   FOREIGN KEY (id_SERIE_SINTETICA) REFERENCES SERIE_SINTETICA(idSERIE_SINTETICA)
   ON UPDATE CASCADE
   ON DELETE CASCADE;
   
   ALTER TABLE ACF_ANUAL ADD CONSTRAINT FK_DESAGREGADO_ACF_ANUAL
   FOREIGN KEY (id_DESAGREGADO) REFERENCES DESAGREGADO(idDESAGREGADO)
   ON UPDATE CASCADE
   ON DELETE CASCADE;
  
   
   -- TABLE ACF_MENSAL --
   
   ALTER TABLE ACF_MENSAL ADD CONSTRAINT FK_ESTACAO_ACF_MENSAL
   FOREIGN KEY (id_ESTACAO) REFERENCES ESTACAO(idESTACAO)
   ON UPDATE CASCADE
   ON DELETE CASCADE;
  
   ALTER TABLE ACF_MENSAL ADD CONSTRAINT FK_SERIE_SINTETICA_ACF_MENSAL
   FOREIGN KEY (id_SERIE_SINTETICA) REFERENCES SERIE_SINTETICA(idSERIE_SINTETICA)
   ON UPDATE CASCADE
   ON DELETE CASCADE;
   
   ALTER TABLE ACF_MENSAL ADD CONSTRAINT FK_DESAGREGADO_ACF_MENSAL
   FOREIGN KEY (id_DESAGREGADO) REFERENCES DESAGREGADO(idDESAGREGADO)
   ON UPDATE CASCADE
   ON DELETE CASCADE;
  
   -- TABLE AVALIACAO --
   
   ALTER TABLE AVALIACAO ADD CONSTRAINT FK_ESTACAO_AVALIACAO
   FOREIGN KEY (id_ESTACAO) REFERENCES ESTACAO(idESTACAO)
   ON UPDATE CASCADE
   ON DELETE CASCADE;
   
   ALTER TABLE AVALIACAO ADD CONSTRAINT FK_SERIE_SINTETICA_AVALIACAO
   FOREIGN KEY (id_SERIE_SINTETICA) REFERENCES SERIE_SINTETICA(idSERIE_SINTETICA)
   ON UPDATE CASCADE
   ON DELETE CASCADE;
   
   ALTER TABLE AVALIACAO ADD CONSTRAINT FK_DESAGREGADO_AVALIACAO
   FOREIGN KEY (id_DESAGREGADO) REFERENCES DESAGREGADO(idDESAGREGADO)
   ON UPDATE CASCADE
   ON DELETE CASCADE;
  
   
   -- TABLE HURST --
   
   ALTER TABLE HURST ADD CONSTRAINT FK_ESTACAO_HURST
   FOREIGN KEY (id_ESTACAO) REFERENCES ESTACAO(idESTACAO)
   ON UPDATE CASCADE
   ON DELETE CASCADE;
   
   ALTER TABLE HURST ADD CONSTRAINT FK_SERIE_SINTETICA_HURST
   FOREIGN KEY (id_SERIE_SINTETICA) REFERENCES SERIE_SINTETICA(idSERIE_SINTETICA)
   ON UPDATE CASCADE
   ON DELETE CASCADE;
  
  ALTER TABLE HURST ADD CONSTRAINT FK_DESAGREGADO_HURST
  FOREIGN KEY (id_DESAGREGADO) REFERENCES DESAGREGADO(idDESAGREGADO)
  ON UPDATE CASCADE
  ON DELETE CASCADE;
   
   -- TABLE SERIE_SINTETICA --
   
   ALTER TABLE SERIE_SINTETICA ADD CONSTRAINT FK_ESTACAO_SERIE_SINTETICA
   FOREIGN KEY (id_ESTACAO) REFERENCES ESTACAO(idESTACAO)
   ON UPDATE CASCADE
   ON DELETE CASCADE;
   
   -- TABLE VOLUME --
   
   ALTER TABLE VOLUME ADD CONSTRAINT FK_ESTACAO_VOLUME
   FOREIGN KEY (id_ESTACAO) REFERENCES ESTACAO(idESTACAO)
   ON UPDATE CASCADE
   ON DELETE CASCADE;
   
   ALTER TABLE VOLUME ADD CONSTRAINT FK_SERIE_SINTETICA_VOLUME
   FOREIGN KEY (id_SERIE_SINTETICA) REFERENCES SERIE_SINTETICA(idSERIE_SINTETICA)
   ON UPDATE CASCADE
   ON DELETE CASCADE;
  
   ALTER TABLE VOLUME ADD CONSTRAINT FK_DESAGREGADO_VOLUME
   FOREIGN KEY (id_DESAGREGADO) REFERENCES DESAGREGADO(idDESAGREGADO)
   ON UPDATE CASCADE
   ON DELETE CASCADE;
   
   -- TABLE SOMA_RESIDUAL
   
   ALTER TABLE SOMA_RESIDUAL ADD CONSTRAINT FK_ESTACAO_SOMA_RESIDUAL
   FOREIGN KEY (id_ESTACAO) REFERENCES ESTACAO(idESTACAO)
   ON UPDATE CASCADE
   ON DELETE CASCADE;
   
   ALTER TABLE SOMA_RESIDUAL ADD CONSTRAINT FK_SERIE_SINTETICA_SOMA_RESIDUAL
   FOREIGN KEY (id_SERIE_SINTETICA) REFERENCES SERIE_SINTETICA(idSERIE_SINTETICA)
   ON UPDATE CASCADE
   ON DELETE CASCADE;
  
   ALTER TABLE SOMA_RESIDUAL ADD CONSTRAINT FK_DESAGREGADO_SOMA_RESIDUAL
   FOREIGN KEY (id_DESAGREGADO) REFERENCES DESAGREGADO(idDESAGREGADO)
   ON UPDATE CASCADE
   ON DELETE CASCADE;
   
   -- PROCEDURES 
   -- PROCEDURES RELACIONADAS A ESTACAO 
   -- PROCEDURE ESTACAO_INFO SELECIONA AS INFORMACOES DA ESTACAO PASSADA COMO PARAMETRO (PARAMETRO E O CODIGO)
  DELIMITER $
  
  CREATE PROCEDURE ESTACAO_INFO(ESTACAO_CODIGO INT)
  BEGIN
  		SELECT codigo,nome,rio,anos,
  		area_bacia as "area da bacia",
  		lat as "latitude",
  		lng as "longitude"
  		FROM ESTACAO WHERE ESTACAO.codigo = (ESTACAO_CODIGO);
  END
  $
  
  DELIMITER ;
  
  -- PROCEDURE ESTACAO_INFO_NOME SELECIONA AS INFORMA��ES DA ESTACAO PASSADA COMO PARAMETRO (PARAMETRO E O NOME)
  DELIMITER $
  
  CREATE PROCEDURE ESTACAO_INFO_NOME(ESTACAO_NOME VARCHAR(50))
  BEGIN
  		SELECT codigo,nome,rio,anos,
  		area_bacia as "area da bacia",
  		lat as "latitude",
  		lng as "longitude"
  		FROM ESTACAO WHERE ESTACAO.nome LIKE CONCAT('%',ESTACAO_NOME,'%');
  END
  $
  
  DELIMITER ;
  
  -- PROCEDURE ESTACAO_SERIE_HISTORICA SELECIONA A SERIE HISTORICA DA ESTACAO PASSADA COMO PARAMETRO
  
  DELIMITER $
  
  CREATE PROCEDURE ESTACAO_SERIE_HISTORICA(ESTACAO_CODIGO INT)
  BEGIN
  		SELECT periodo,valor as "valor"
  		FROM VAZAO 
  		WHERE id_ESTACAO = (SELECT idESTACAO FROM ESTACAO WHERE codigo=ESTACAO_CODIGO);
  END
  $
  
  DELIMITER ;
  
  -- PROCEDURE ESTACAO_SERIE_HISTORICA_NOME SELECIONA A SERIE HISTORICA DA ESTACAO PASSADA COMO PARAMETRO(PARAMETRO � O NOME)
  
  DELIMITER $
  
  CREATE PROCEDURE ESTACAO_SERIE_HISTORICA_NOME(ESTACAO_NOME VARCHAR(50))
  BEGIN
  		SELECT periodo,valor as "valor"
  		FROM VAZAO 
  		WHERE id_ESTACAO = (SELECT idESTACAO FROM ESTACAO WHERE ESTACAO.nome LIKE CONCAT('%',ESTACAO_NOME,'%'));
  END
  $
  
  DELIMITER ;
  
  -- PROCEDURE ESTACAO_ACF_MENSAL SELECIONA A ACF MENSAL DA SERIE HISTORICA DA ESTACAO PASSADA COMO PARAMETRO
  
  DELIMITER $
  CREATE PROCEDURE ESTACAO_ACF_MENSAL(ESTACAO_CODIGO INT)
  BEGIN
  		SELECT lags AS "lag",
  	TRUNCATE(jan,3) AS "jan",
  	TRUNCATE(fev,3) AS "fev",
  	TRUNCATE(mar,3) AS "mar",
  	TRUNCATE(abr,3) AS "abr",
  	TRUNCATE(mai,3) AS "mai",
  	TRUNCATE(jun,3) AS "jun",
  	TRUNCATE(jul,3) AS "jul",
  	TRUNCATE(ago,3) AS "ago",
  	TRUNCATE(seb,3) AS "set",
  	TRUNCATE(oub,3) AS "out",
  	TRUNCATE(nov,3) AS "nov",
  	TRUNCATE(dez,3) AS "dez"
  	FROM ACF_MENSAL 
  	WHERE id_ESTACAO = (SELECT idESTACAO FROM ESTACAO WHERE codigo=ESTACAO_CODIGO);
  END
  $
  
  DELIMITER ;
  
  -- PROCEDURE ESTACAO_ACF_MENSAL_NOME SELECIONA A ACF MENSAL DA SERIE HISTORICA DA ESTACAO PASSADA COMO PARAMETRO(PARAMETRO � O NOME)
  
  DELIMITER $
  CREATE PROCEDURE ESTACAO_ACF_MENSAL_NOME(ESTACAO_NOME VARCHAR(50))
  BEGIN
  		SELECT lags AS "lag",
  	TRUNCATE(jan,3) AS "jan",
  	TRUNCATE(fev,3) AS "fev",
  	TRUNCATE(mar,3) AS "mar",
  	TRUNCATE(abr,3) AS "abr" ,
  	TRUNCATE(mai,3) AS "mai",
  	TRUNCATE(jun,3) AS "jun",
  	TRUNCATE(jul,3) AS "jul",
  	TRUNCATE(ago,3) AS "ago",
  	TRUNCATE(seb,3) AS "set",
  	TRUNCATE(oub,3) AS "out",
  	TRUNCATE(nov,3) AS "nov",
  	TRUNCATE(dez,3) AS "dez"
  	FROM ACF_MENSAL 
  	WHERE id_ESTACAO = (SELECT idESTACAO FROM ESTACAO WHERE ESTACAO.nome LIKE CONCAT('%',ESTACAO_NOME,'%'));
  END
  $
  
  DELIMITER ;
  
  -- PROCEDURE ESTACAO_ACF_ANUAL SELECIONA A ACF ANUAL DA SERIE HISTORICA DA ESTACAO PASSADA COMO PARAMETRO
  
  DELIMITER $
  
  CREATE PROCEDURE ESTACAO_ACF_ANUAL(ESTACAO_CODIGO INT)
  BEGIN
  		SELECT lags AS "lag", TRUNCATE(VALOR,3) AS "VALOR" 
  		FROM ACF_ANUAL 
  		WHERE id_ESTACAO = (SELECT idESTACAO FROM ESTACAO WHERE codigo=ESTACAO_CODIGO);
  END
  $
  
  DELIMITER ;
  -- PROCEDURE ESTACAO_ACF_ANUAL_NOME SELECIONA A ACF ANUAL DA SERIE HISTORICA DA ESTACAO PASSADA COMO PARAMETRO(PARAMETRO � O NOME)
  
  DELIMITER $
  
  CREATE PROCEDURE ESTACAO_ACF_ANUAL_NOME(ESTACAO_NOME VARCHAR(50))
  BEGIN
  		SELECT lags AS "lag", TRUNCATE(VALOR,3) AS "VALOR" 
  		FROM ACF_ANUAL 
  		WHERE id_ESTACAO = (SELECT idESTACAO FROM ESTACAO WHERE ESTACAO.nome LIKE CONCAT('%',ESTACAO_NOME,'%'));
  END
  $
  
  DELIMITER ;
  
  -- PROCEDURE ESTACAO_HURST SELECIONA O HURST DA SERIE HISTORICA DA ESTACAO PASSADA COMO PARAMETRO
  
  DELIMITER $
  
  CREATE PROCEDURE ESTACAO_HURST(ESTACAO_CODIGO INT)
  BEGIN
  		SELECT TRUNCATE(ANUAL,3) AS "ANUAL",
  		TRUNCATE(MENSAL,3) AS "MENSAL"
  		FROM HURST 
  		WHERE id_ESTACAO = (SELECT idESTACAO FROM ESTACAO WHERE codigo=ESTACAO_CODIGO);
  END
  $
  
  DELIMITER ;
  
  -- PROCEDURE ESTACAO_HURST_NOME SELECIONA O HURST DA SERIE HISTORICA DA ESTACAO PASSADA COMO PARAMETRO(NOME)
  
  DELIMITER $
  
  CREATE PROCEDURE ESTACAO_HURST_NOME(ESTACAO_NOME VARCHAR(50))
  BEGIN
  		SELECT TRUNCATE(ANUAL,3) AS "ANUAL",
  		TRUNCATE(MENSAL,3) AS "MENSAL"
  		FROM HURST 
  		WHERE id_ESTACAO = (SELECT idESTACAO FROM ESTACAO WHERE ESTACAO.nome LIKE CONCAT('%',ESTACAO_NOME,'%'));
  END
  $
  
  DELIMITER ;
  
  -- PROCEDURE ESTACAO_AVALIACAO SELECIONA A AVALIACAO DA SERIE HISTORICA DA ESTACAO PASSADA COMO PARAMETRO
  
  DELIMITER $
  
  CREATE PROCEDURE ESTACAO_AVALIACAO(ESTACAO_CODIGO INT)
  BEGIN
  		SELECT MES, 
  		TRUNCATE(MEDIA,3) AS "MEDIA",
  		TRUNCATE(DP,3) AS "DESVIO PADRAO",
  		TRUNCATE(ASSIMETRIA,3) AS "ASSIMETRIA",
  		TRUNCATE(IND_KURT,3) AS "INDICE KURT",
  		TRUNCATE(COEF_VAR,3) AS "COEFICIENTE DE VARIACAO"
  		FROM AVALIACAO 
  		WHERE id_ESTACAO = (SELECT idESTACAO FROM ESTACAO WHERE codigo=ESTACAO_CODIGO);
  END
  $
  
  DELIMITER ;
  
  -- PROCEDURE ESTACAO_AVALIACAO_NOME SELECIONA A AVALIACAO DA SERIE HISTORICA DA ESTACAO PASSADA COMO PARAMETRO(NOME)
  
  DELIMITER $
  
  CREATE PROCEDURE ESTACAO_AVALIACAO_NOME(ESTACAO_NOME VARCHAR(50))
  BEGIN
  		SELECT MES, 
  		TRUNCATE(MEDIA,3) AS "MEDIA",
  		TRUNCATE(DP,3) AS "DESVIO PADRAO",
  		TRUNCATE(ASSIMETRIA,3) AS "ASSIMETRIA",
  		TRUNCATE(IND_KURT,3) AS "INDICE KURT",
  		TRUNCATE(COEF_VAR,3) AS "COEFICIENTE DE VARIACAO"
  		FROM AVALIACAO 
  		WHERE id_ESTACAO = (SELECT idESTACAO FROM ESTACAO WHERE ESTACAO.nome LIKE CONCAT('%',ESTACAO_NOME,'%') );
  END
  $
  
  DELIMITER ;
  
  -- PROCEDURE ESTACAO_VOLUME SELECIONA O VOLUME DE RESERVATORIO DA SERIE HISTORICA DA ESTACAO PASSADA COMO PARAMETRO
  
  DELIMITER $
  
  CREATE PROCEDURE ESTACAO_VOLUME(ESTACAO_CODIGO INT)
  BEGIN
  		SELECT valor
  		FROM VOLUME
  		WHERE id_ESTACAO = (SELECT idESTACAO FROM ESTACAO WHERE codigo=ESTACAO_CODIGO);
  END
  $
  
  DELIMITER ;
  
  -- PROCEDURE ESTACAO_VOLUME_NOME SELECIONA O VOLUME DE RESERVATORIOS DA SERIE HISTORICA DA ESTACAO PASSADA COMO PARAMETRO(NOME)
  
  DELIMITER $
  
  CREATE PROCEDURE ESTACAO_VOLUME_NOME(ESTACAO_NOME VARCHAR(50))
  BEGIN
  		SELECT valor
  		FROM VOLUME 
  		WHERE id_ESTACAO = (SELECT idESTACAO FROM ESTACAO WHERE ESTACAO.nome LIKE CONCAT('%',ESTACAO_NOME,'%') );
  END
  $
  
  DELIMITER ;
  
  -- PROCEDURE ESTACAO_SOMA_RESIDUAL SELECIONA A SOMA RESIDUAL DA SERIE HISTORICA DA ESTACAO PASSADA COMO PARAMETRO
  
  DELIMITER $
  
  CREATE PROCEDURE ESTACAO_SOMA_RESIDUAL(ESTACAO_CODIGO INT)
  BEGIN
  		SELECT valor
  		FROM SOMA_RESIDUAL
  		WHERE id_ESTACAO = (SELECT idESTACAO FROM ESTACAO WHERE codigo=ESTACAO_CODIGO);
  END
  $
  
  DELIMITER ;
  
  -- PROCEDURE ESTACAO_SOMA_RESIDUAL_NOME SELECIONA A SOMA RESIDUAL DE RESERVATORIOS DA SERIE HISTORICA DA ESTACAO PASSADA COMO PARAMETRO(NOME)
  
  DELIMITER $
  
  CREATE PROCEDURE ESTACAO_SOMA_RESIDUAL_NOME(ESTACAO_NOME VARCHAR(50))
  BEGIN
  		SELECT valor
  		FROM SOMA_RESIDUAL 
  		WHERE id_ESTACAO = (SELECT idESTACAO FROM ESTACAO WHERE ESTACAO.nome LIKE CONCAT('%',ESTACAO_NOME,'%') );
  END
  $
  
  DELIMITER ;
  
  -- PROCEDURE ESTACAO_SERIES_SINTETICAS SELECIONA OS DADOS DAS SERIES SINTETICAS GERADAS A PARTIR DA ESTA��O PASSA COMO PARAMETRO
  
  DELIMITER $
  
  CREATE PROCEDURE ESTACAO_SERIES_SINTETICAS(ESTACAO_CODIGO INT)
  BEGIN
  		SELECT modelo,lags,desagregado,metodo,anos,register_date as "Data",idSERIE_SINTETICA
  		FROM SERIE_SINTETICA
  		WHERE id_ESTACAO = (SELECT idESTACAO FROM ESTACAO WHERE codigo=ESTACAO_CODIGO);
  END
  $
  
  DELIMITER ;
  
  -- PROCEDURE ESTACAO_SERIES_SINTETICAS_NOME SELECIONA OS DADOS DAS SERIES SINTETICAS GERADAS A PARTIR DA ESTA��O PASSA COMO PARAMETRO (PARAMETRO � O NOME)
  
  DELIMITER $
  
  CREATE PROCEDURE ESTACAO_SERIES_SINTETICAS_NOME(ESTACAO_NOME VARCHAR(50))
  BEGIN
  		SELECT modelo,lags,desagregado,metodo,anos,register_date as "Data",idSERIE_SINTETICA
  		FROM SERIE_SINTETICA
  		WHERE id_ESTACAO = (SELECT idESTACAO FROM ESTACAO WHERE ESTACAO.nome LIKE CONCAT('%',ESTACAO_NOME,'%'));
  END
  $
  
  DELIMITER ;
  
  -- PROCEDURES RELACIONADAS AS SERIES SINTETICAS
  -- PROCEDURE SS_ACF_MENSAL SELECIONA A ACF MENSAL DA SERIE SINTETICA PASSADA COMO PARAMETRO (O PARAMETRO � O idSERIE_SINTETICA)
  
  DELIMITER $
  CREATE PROCEDURE SS_ACF_MENSAL(SS_CODIGO INT)
  BEGIN
  		SELECT lags,
  	TRUNCATE(jan,3) AS "jan",
  	TRUNCATE(fev,3) AS "fev",
  	TRUNCATE(mar,3) AS "mar",
  	TRUNCATE(abr,3) AS "abr" ,
  	TRUNCATE(mai,3) AS "mai",
  	TRUNCATE(jun,3) AS "jun",
  	TRUNCATE(jul,3) AS "jul",
  	TRUNCATE(ago,3) AS "ago",
  	TRUNCATE(seb,3) AS "set",
  	TRUNCATE(oub,3) AS "out",
  	TRUNCATE(nov,3) AS "nov",
  	TRUNCATE(dez,3) AS "dez"
  	FROM ACF_MENSAL 
  	WHERE id_SERIE_SINTETICA = SS_CODIGO;
  END
  $
  
  DELIMITER ;
  
  
  -- PROCEDURE SS_ACF_ANUAL SELECIONA A ACF ANUAL DA SERIE SINTETICA PASSADA COMO PARAMETRO (O PARAMETRO � O idSERIE_SINTETICA)
  
  DELIMITER $
  
  CREATE PROCEDURE SS_ACF_ANUAL(SS_CODIGO INT)
  BEGIN
  		SELECT lags, TRUNCATE(VALOR,3) AS "VALOR" 
  		FROM ACF_ANUAL 
  		WHERE id_SERIE_SINTETICA = SS_CODIGO;
  END
  $
  
  DELIMITER ;
  
  -- PROCEDURE SS_HURST SELECIONA O HURST DA SERIE SINTETICA PASSADA COMO PARAMETRO (O PARAMETRO � O idSERIE_SINTETICA)
  
  DELIMITER $
  
  CREATE PROCEDURE SS_HURST(SS_CODIGO INT)
  BEGIN
  		SELECT TRUNCATE(ANUAL,3) AS "ANUAL",
  		TRUNCATE(MENSAL,3) AS "MENSAL"
  		FROM HURST 
  		WHERE id_SERIE_SINTETICA = SS_CODIGO;
  END
  $
  
  DELIMITER ;
  
  -- PROCEDURE SS_AVALIACAO SELECIONA A AVALIACAO DA SERIE SINTETICA PASSADA COMO PARAMETRO (O PARAMETRO � O idSERIE_SINTETICA)
  
  DELIMITER $
  
  CREATE PROCEDURE SS_AVALIACAO(SS_CODIGO INT)
  BEGIN
  		SELECT MES, 
  		TRUNCATE(MEDIA,3) AS "MEDIA",
  		TRUNCATE(DP,3) AS "DESVIO PADRAO",
  		TRUNCATE(ASSIMETRIA,3) AS "ASSIMETRIA",
  		TRUNCATE(IND_KURT,3) AS "INDICE KURT",
  		TRUNCATE(COEF_VAR,3) AS "COEFICIENTE DE VARIACAO"
  		FROM AVALIACAO 
  		WHERE id_SERIE_SINTETICA = SS_CODIGO;
  END
  $
  
  DELIMITER ;
  
  -- PROCEDURE SS_VOLUME SELECIONA O VOLUME DE RESERVATORIOS DA SERIE SINTETICA PASSADA COMO PARAMETRO (O PARAMETRO � O idSERIE_SINTETICA)
  
  DELIMITER $
  
  CREATE PROCEDURE SS_VOLUME(SS_CODIGO INT)
  BEGIN
  		SELECT valor
  		FROM VOLUME 
  		WHERE id_SERIE_SINTETICA = SS_CODIGO;
  END
  $
  
  DELIMITER ;
  
  -- PROCEDURE SS_SOMA_RESIDUAL SELECIONA A SOMA RESIDUAL DA SERIE SINTETICA PASSADA COMO PARAMETRO (O PARAMETRO � O idSERIE_SINTETICA)
  
  DELIMITER $
  
  CREATE PROCEDURE SS_SOMA_RESIDUAL(SS_CODIGO INT)
  BEGIN
  		SELECT valor
  		FROM SOMA_RESIDUAL
  		WHERE id_SERIE_SINTETICA = SS_CODIGO;
  END
  $
  
  DELIMITER ;
  
  -- PROCEDURE SS_DESAGREGADO SELECIONA AS SERIES DESAGREGADAS DA SERIE SINTETICA PASSADA COMO PARAMETRO (O PARAMETRO � O idSERIE_SINTETICA)
  
  DELIMITER $
  
  CREATE PROCEDURE SS_DESAGREGADO(SS_CODIGO INT)
  BEGIN
  		SELECT parametrico, register_date as "Data", idDESAGREGADO
  		FROM DESAGREGADO
  		WHERE id_SERIE_SINTETICA = SS_CODIGO;
  END
  $
  
  DELIMITER ;
  
  -- PROCEDURES RELACIONADAS AS SERIES DESAGREGADAS
  -- PROCEDURE SD_ACF_MENSAL SELECIONA A ACF MENSAL DA SERIE DESAGREGADA PASSADA COMO PARAMETRO (O PARAMETRO E O idDESAGREGADO)
  
  DELIMITER $
  CREATE PROCEDURE SD_ACF_MENSAL(SD_CODIGO INT)
  BEGIN
  		SELECT lags,
  	TRUNCATE(jan,3) AS "jan",
  	TRUNCATE(fev,3) AS "fev",
  	TRUNCATE(mar,3) AS "mar",
  	TRUNCATE(abr,3) AS "abr" ,
  	TRUNCATE(mai,3) AS "mai",
  	TRUNCATE(jun,3) AS "jun",
  	TRUNCATE(jul,3) AS "jul",
  	TRUNCATE(ago,3) AS "ago",
  	TRUNCATE(seb,3) AS "set",
  	TRUNCATE(oub,3) AS "out",
  	TRUNCATE(nov,3) AS "nov",
  	TRUNCATE(dez,3) AS "dez"
  	FROM ACF_MENSAL 
  	WHERE id_DESAGREGADO = SD_CODIGO;
  END
  $
  
  DELIMITER ;
  
  
  -- PROCEDURE SD_ACF_ANUAL SELECIONA A ACF ANUAL DA SERIE DESAGREGADA PASSADA COMO PARAMETRO (O PARAMETRO � O idDESAGREGADO)
  
  DELIMITER $
  
  CREATE PROCEDURE SD_ACF_ANUAL(SD_CODIGO INT)
  BEGIN
  		SELECT lags, TRUNCATE(VALOR,3) AS "VALOR" 
  		FROM ACF_ANUAL 
  		WHERE id_DESAGREGADO = SD_CODIGO;
  END
  $
  
  DELIMITER ;
  
  -- PROCEDURE SD_HURST SELECIONA O HURST DA SERIE DESAGREGADA PASSADA COMO PARAMETRO (O PARAMETRO � O idDESAGREGADO)
  
  DELIMITER $
  
  CREATE PROCEDURE SD_HURST(SD_CODIGO INT)
  BEGIN
  		SELECT TRUNCATE(ANUAL,3) AS "ANUAL",
  		TRUNCATE(MENSAL,3) AS "MENSAL"
  		FROM HURST 
  		WHERE id_DESAGREGADO = SD_CODIGO;
  END
  $
  
  DELIMITER ;
  
  -- PROCEDURE SD_AVALIACAO SELECIONA A AVALIACAO DA SERIE DESAGREGADA PASSADA COMO PARAMETRO (O PARAMETRO � O idDESAGREGADO)
  
  DELIMITER $
  
  CREATE PROCEDURE SD_AVALIACAO(SD_CODIGO INT)
  BEGIN
  		SELECT MES, 
  		TRUNCATE(MEDIA,3) AS "MEDIA",
  		TRUNCATE(DP,3) AS "DESVIO PADRAO",
  		TRUNCATE(ASSIMETRIA,3) AS "ASSIMETRIA",
  		TRUNCATE(IND_KURT,3) AS "INDICE KURT",
  		TRUNCATE(COEF_VAR,3) AS "COEFICIENTE DE VARIACAO"
  		FROM AVALIACAO 
  		WHERE id_DESAGREGADO = SD_CODIGO;
  END
  $
  
  DELIMITER ;
  
  -- PROCEDURE SD_VOLUME SELECIONA O VOLUME DE RESERVATORIOS DA SERIE DESAGREGADA PASSADA COMO PARAMETRO (O PARAMETRO � O idDESAGREGADO)
  
  DELIMITER $
  
  CREATE PROCEDURE SD_VOLUME(SD_CODIGO INT)
  BEGIN
  		SELECT valor
  		FROM VOLUME 
  		WHERE id_DESAGREGADO = SD_CODIGO;
  END
  $
  
  DELIMITER ;
  
  -- PROCEDURE SD_SOMA_RESIDUAL SELECIONA A SOMA RESIDUAL DA SERIE DESAGREGADA PASSADA COMO PARAMETRO (O PARAMETRO � O idDESAGREGADO)
  
  DELIMITER $
  
  CREATE PROCEDURE SD_SOMA_RESIDUAL(SD_CODIGO INT)
  BEGIN
  		SELECT valor
  		FROM SOMA_RESIDUAL
  		WHERE id_DESAGREGADO = SD_CODIGO;
  END
  $
  
  DELIMITER ;
  