Ir para conteúdo
Fórum Script Brasil
  • 0

Consulta MySQL


Ruyter

Pergunta

Tenho uma tabela onde há vários registros com um mesmo IDENTIFICADOR e vários INDENTIFICADORES diferentes.

Como percorrer os registros de uma tabela, COM BASE NOS IDENTIFICADORES, usando BETWEEN (analisando um período) e o MIN e MAX para ABSTRAIR o valor mínimo e máximo de cada período em relação a cada IDENTIFICADOR DISTINTO?

Editado por Ruyter
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 1

Como você não passou a estrutura da tabela, eu tive que improvisar uma:

 

CREATE TABLE `tbdizimo` (
  `id` int NOT NULL,
  `data` date DEFAULT NULL,
  `oferta` float DEFAULT NULL,
  `ovelha` varchar(45) COLLATE utf8_swedish_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_swedish_ci

Para saber qual foi a menor oferta e a maior oferta de cada ovelho nesses últimos três meses, eu criei a seguinte consulta:
 

CREATE 
    ALGORITHM = UNDEFINED 
    DEFINER = `root`@`localhost` 
    SQL SECURITY DEFINER
VIEW `astudy`.`vw_dizimo` AS
    SELECT 
        `astudy`.`tbdizimo`.`ovelha` AS `ovelha`,
        MIN(`astudy`.`tbdizimo`.`oferta`) AS `Min`,
        MAX(`astudy`.`tbdizimo`.`oferta`) AS `Max`
    FROM
        `astudy`.`tbdizimo`
    WHERE
        (`astudy`.`tbdizimo`.`data` BETWEEN '2022-08-01' AND '2022-10-30')
    GROUP BY `astudy`.`tbdizimo`.`ovelha`

 

Link para o comentário
Compartilhar em outros sites

  • 0
11 horas atrás, Frank K Hosaka disse:

Como você não passou a estrutura da tabela, eu tive que improvisar uma:

 

CREATE TABLE `tbdizimo` (
  `id` int NOT NULL,
  `data` date DEFAULT NULL,
  `oferta` float DEFAULT NULL,
  `ovelha` varchar(45) COLLATE utf8_swedish_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_swedish_ci

Para saber qual foi a menor oferta e a maior oferta de cada ovelho nesses últimos três meses, eu criei a seguinte consulta:
 

CREATE 
    ALGORITHM = UNDEFINED 
    DEFINER = `root`@`localhost` 
    SQL SECURITY DEFINER
VIEW `astudy`.`vw_dizimo` AS
    SELECT 
        `astudy`.`tbdizimo`.`ovelha` AS `ovelha`,
        MIN(`astudy`.`tbdizimo`.`oferta`) AS `Min`,
        MAX(`astudy`.`tbdizimo`.`oferta`) AS `Max`
    FROM
        `astudy`.`tbdizimo`
    WHERE
        (`astudy`.`tbdizimo`.`data` BETWEEN '2022-08-01' AND '2022-10-30')
    GROUP BY `astudy`.`tbdizimo`.`ovelha`

 

Bom dia,

Obrigado pela dica, vou adaptá-la e testar.

Também já estou tentando com uma VIEW para dados anterior e outra para dados atuais e depois um SELECT para o resultado desejado.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652,1k
×
×
  • Criar Novo...