nClub - Banco de Dados

Limpar Mensalidades do ano seguinte com valor incorreto, utilizado depois de 20 de Dezembro quando se cadastra um novo sócio.

DELETE ce.* FROM conta_entrada ce
JOIN titulo_mensalidade tm ON tm.conta_entrada_id = ce.id
JOIN conta c ON c.id = ce.conta_saida
JOIN socio s ON s.pessoa_id = c.pessoa_id
WHERE ce.efetivada != 1
AND tm.ano = 2024
AND s.titulo_num = 3129;

No script acima apenas alterar o numero do socio na ultima linha, no caso do exemplo 3129 e tambem o ano a ser excluído.
_________________________________________________________________________________

Relatório de Idade x Contribuição ao Clube

SELECT data_nascimento, nome, id, data_admissao
FROM pessoa
WHERE TIMESTAMPDIFF(YEAR, data_nascimento, CURDATE()) = 75
AND TIMESTAMPDIFF(YEAR, data_admissao, CURDATE()) >= 30;

 

 

REMIDOS ENTRE CERTAS IDADES

SELECT data_nascimento, nome, id, data_admissao

FROM pessoa

WHERE TIMESTAMPDIFF(YEAR, data_nascimento, CURDATE()) BETWEEN 0 AND 60

AND TIMESTAMPDIFF(YEAR, data_admissao, CURDATE()) >= 35;

 

REMIDOS COM IDADE IGUAL OU SUPERIOR

SELECT data_nascimento, nome, id, data_admissao

FROM pessoa

WHERE TIMESTAMPDIFF(YEAR, data_nascimento, CURDATE()) >= 60

AND TIMESTAMPDIFF(YEAR, data_admissao, CURDATE()) >= 35;

______________________________________________________________________________________________________________

Quantidade de sócios Mulheres, Homens, Meninos e Meninas

SELECT
COUNT(*) AS total,
p.sexo,
IF(TIMESTAMPDIFF(YEAR, data_nascimento, CURDATE()) > 20, 'SIM', 'NÃO') AS adulto
FROM pessoa p
JOIN socio s ON s.pessoa_id = p.id
WHERE s.titulo_num IS NOT NULL
GROUP BY p.sexo, adulto;
_____________________________________________________________________________________________________________

Como preencher todos os titulos no intervalo que nao foram importados do banco de dados anterior

https://guarani.nclub.app/fixes/create-missing-titles/2471

O numero no final da linha, indica o numero maior a ser criado nesta etapa A linha acima ira mostrar tudo que será criado.

Para executar a função, a linha deve ser a seguinte

https://guarani.nclub.app/fixes/create-missing-titles/2471/1

_____________________________________________________________________________________________________________

Socios Patrominiais e Dependentes Patrominiais ativos e idades de 0 a 20, 21 a 30, 31 a 40, 41 a 50 e 50+

SELECT s.titulo_categoria, ( CASE WHEN TIMESTAMPDIFF(YEAR, data_nascimento, CURDATE())
BETWEEN 0 AND 20 THEN '0-20' WHEN TIMESTAMPDIFF(YEAR, data_nascimento, CURDATE())
BETWEEN 21 AND 30 THEN '21-30' WHEN TIMESTAMPDIFF(YEAR, data_nascimento, CURDATE())
BETWEEN 31 AND 40 THEN '31-40' WHEN TIMESTAMPDIFF(YEAR, data_nascimento, CURDATE())
BETWEEN 41 AND 50 THEN '41-50' ELSE '51+' END ) AS idade, COUNT(*) AS total
FROM pessoa p JOIN socio s ON s.pessoa_id = p.id
WHERE s.titulo_num IS NOT NULL AND (s.titulo_categoria = 1 OR s.titulo_categoria = 10)
GROUP BY idade, s.titulo_categoria
ORDER BY s.titulo_categoria, idade, total;

_____________________________________________________________________________________________________________
Sócios Contribuintes com dependentes e sócios contribuintes sem dependentes

 

SELECT s.titulo_categoria, ( CASE WHEN TIMESTAMPDIFF(YEAR, data_nascimento, CURDATE()) 

BETWEEN 0 AND 20 THEN '0-20' WHEN TIMESTAMPDIFF(YEAR, data_nascimento, CURDATE()) 

BETWEEN 21 AND 30 THEN '21-30' WHEN TIMESTAMPDIFF(YEAR, data_nascimento, CURDATE()) 

BETWEEN 31 AND 40 THEN '31-40' WHEN TIMESTAMPDIFF(YEAR, data_nascimento, CURDATE()) 

BETWEEN 41 AND 50 THEN '41-50' WHEN TIMESTAMPDIFF(YEAR, data_nascimento, CURDATE()) 

BETWEEN 51 AND 60 THEN '51-60' ELSE ‘61+' END ) AS idade, COUNT(*) AS total

FROM pessoa p JOIN socio s ON s.pessoa_id = p.id 

WHERE s.titulo_num IS NOT NULL AND (s.titulo_categoria = 4 OR s.titulo_categoria = 5)

GROUP BY idade, s.titulo_categoria
ORDER BY s.titulo_categoria, idade, total;

 

_____________________________________________________________________________________________________________

 

 

SELECT s.titulo_categoria, ( CASE WHEN TIMESTAMPDIFF(YEAR, data_nascimento, CURDATE()) 

BETWEEN 0 AND 20 THEN '0-20' WHEN TIMESTAMPDIFF(YEAR, data_nascimento, CURDATE()) 

BETWEEN 21 AND 30 THEN '21-30' WHEN TIMESTAMPDIFF(YEAR, data_nascimento, CURDATE()) 

BETWEEN 31 AND 40 THEN '31-40' WHEN TIMESTAMPDIFF(YEAR, data_nascimento, CURDATE()) 

BETWEEN 41 AND 50 THEN '41-50' WHEN TIMESTAMPDIFF(YEAR, data_nascimento, CURDATE()) 

BETWEEN 51 AND 60 THEN '51-60' ELSE '61+' END ) AS idade, COUNT(*) AS total FROM pessoa p JOIN socio s ON s.pessoa_id = p.id WHERE s.titulo_num IS NOT NULL AND (s.titulo_categoria = 4 OR s.titulo_categoria = 5) GROUP BY idade, s.titulo_categoria ORDER BY s.titulo_categoria, idade, total;

 

_____________________________________________________________________________________________________________

 

SELECT s.titulo_categoria, ( CASE WHEN TIMESTAMPDIFF(YEAR, data_nascimento, CURDATE()) 

BETWEEN 0 AND 50 THEN ‘0-50’ WHEN TIMESTAMPDIFF(YEAR, data_nascimento, CURDATE()) 

BETWEEN 51 AND 60 THEN ’51-60' WHEN TIMESTAMPDIFF(YEAR, data_nascimento, CURDATE()) 

BETWEEN 61 AND 70 THEN ’61-70' ELSE ‘71+' END ) AS idade, COUNT(*) AS total FROM pessoa p JOIN socio s ON s.pessoa_id = p.id WHERE s.titulo_num IS NOT NULL AND (s.titulo_categoria = 3 ) GROUP BY idade, s.titulo_categoria ORDER BY s.titulo_categoria, idade, total;

_________________________________________________________________________________________________

 

Excluir celulares e emails duplicados dos dependentes

 

_________________________________________________________________________________________________

Mudar o evento para uma determinada categoria e colocar o antigo evento nas observacoes.

 

UPDATE dependencia_aluguel
SET observacao = COALESCE(
        CONCAT((SELECT e.nome FROM evento e WHERE e.id = evento_id), ' ', observacao),
        (SELECT e.nome FROM evento e WHERE e.id = evento_id),
        observacao
                 ),
    evento_id  = 1
WHERE (SELECT d.categoria_id FROM dependencia d WHERE d.id = dependencia_id) = 4

 

_________________________________________________________________________________________________

 

Relatório de listagem de sócios com título ativo.

 

SELECT a.cpf_cnpj, a.nome, socio.titulo_num, a.sexo, a.data_nascimento, tc.nome as categoria, a.email, a.telefone_celular

FROM pessoa a

JOIN socio

ON socio.pessoa_id = a.id

JOIN titulo

ON titulo.titulo_num = socio.titulo_num

JOIN titulo_categoria tc

ON tc.id = socio.titulo_categoria

WHERE titulo.situacao = 2;

 

_________________________________________________________________________________________________

Entradas mensais por tipo de sócios, fornecedores, convidados e etc.

SELECT
    CASE MONTH(data_registro)
        WHEN 1 THEN 'Janeiro'
        WHEN 2 THEN 'Fevereiro'
        WHEN 3 THEN 'Março'
        WHEN 4 THEN 'Abril'
        WHEN 5 THEN 'Maio'
        WHEN 6 THEN 'Junho'
        WHEN 7 THEN 'Julho'
        WHEN 8 THEN 'Agosto'
        WHEN 9 THEN 'Setembro'
        WHEN 10 THEN 'Outubro'
        WHEN 11 THEN 'Novembro'
        WHEN 12 THEN 'Dezembro'
    END as mes,
    COUNT(CASE
        WHEN er.tipo_entrada = 1 AND tc.id = 1 THEN 1
    END) as titular,
    COUNT(CASE
        WHEN er.tipo_entrada = 1 AND tc.id = 2 THEN 1
    END) as dependente,
    COUNT(CASE
        WHEN er.tipo_entrada = 1 AND (tc.id = 3 OR tc.id = 6) THEN 1
    END) as benemerito_jubilado,
    COUNT(CASE
        WHEN er.tipo_entrada = 1 AND (tc.id IS NULL OR (tc.id != 1 AND tc.id != 2 AND tc.id != 3 AND tc.id != 6)) THEN 1
    END) as outros_socios,
    COUNT(CASE WHEN tipo_entrada = 2 THEN 1 END) as fornecedor,
    COUNT(CASE WHEN tipo_entrada = 5 THEN 1 END) as convidado,
    COUNT(CASE WHEN tipo_entrada = 7 THEN 1 END) as prestador_servico,
    COUNT(CASE WHEN tipo_entrada = 8 THEN 1 END) as projetos_sociais,
    COUNT(CASE WHEN tipo_entrada = 9 THEN 1 END) as acompanhante
FROM
    entrada_registro er
    LEFT JOIN socio s ON er.pessoa_id = s.pessoa_id
    LEFT JOIN titulo_categoria tc ON tc.id = s.titulo_categoria
WHERE
    YEAR(er.data_registro) = 2024
    AND er.saida = 0
    AND er.portaria_id IN (1, 9, 10, 11)
GROUP BY
    MONTH(data_registro)
ORDER BY
    MONTH(data_registro);

_________________________________________________________________________________________________

RELATÓRIO DE INSCRITOS NO ULTIMO CAMPEONATO DE FUTEBOL ENTRE 15/18 ANOS

 

SELECT 
    a.id,
    a.nome,
    s.titulo_num AS titulo,
    TIMESTAMPDIFF(YEAR, a.data_nascimento, CURDATE()) AS idade
FROM pessoa a
JOIN socio s ON s.pessoa_id = a.id
JOIN fut_campeonato_inscricao i ON i.socio_id = a.id
WHERE i.campeonato_id = 29
  AND TIMESTAMPDIFF(YEAR, a.data_nascimento, CURDATE()) BETWEEN 15 AND 18
ORDER BY a.nome;

 

 

Detalhes do artigo

Identificação do artigo:
5
Data de publicação:
05/01/2024 11:10:48
Avaliação :