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;