1.1.Quais funcionalidades não possuem chamados? SELECT * FROM funcionalidade
WHERE id NOT IN
(SELECT idFuncionalidade FROM chamado_funcionalidade
INNER JOIN chamado ON chamado_funcionalidade.IdOriginalChamado = chamado.idOriginal
WHERE chamado.dataInicial <= '2013-11-30');
1.2.Quais funcionalidades não possuem testes? SELECT * FROM funcionalidade
WHERE id NOT IN
(SELECT DISTINCT idFuncionalidade FROM teste_funcionalidade WHERE idFuncionalidade <> '');
1.3.Quais são as funcionalidades sem testes e sem chamados? SELECT * FROM funcionalidade
WHERE id NOT IN
(SELECT DISTINCT idFuncionalidade FROM teste_funcionalidade WHERE idFuncionalidade <> '')
AND id NOT IN (SELECT DISTINCT idFuncionalidade FROM chama- do_funcionalidade);
1.4.Quais chamados não possuem testes? SELECT * FROM chamado
INNER JOIN chamado_funcionalidade
ON chamado.IdOriginal = chamado_funcionalidade.IdOriginalChamado INNER JOIN
(SELECT * FROM funcionalidade WHERE id NOT IN
(SELECT DISTINCT idFuncionalidade FROM teste_funcionalidade WHERE idFuncionalidade <> '')) as funcionalidadeSemTestes
ON (chamado_funcionalidade.idFuncionalidade = funcionalidadeSemTestes.id); 1.4.1. Chamados até setembro de 2014 que não possuem testes SELECT * FROM chamado
INNER JOIN chamado_funcionalidade
ON chamado.IdOriginal = chamado_funcionalidade.IdOriginalChamado INNER JOIN
(SELECT id FROM funcionalidade WHERE id NOT IN
-- Funcionalidades sem Testes
(SELECT DISTINCT idFuncionalidade FROM teste_funcionalidade
WHERE idFuncionalidade <> '' UNION
-- Funcionalidades com testes criados a partir de outubro SELECT DISTINCT idFuncionalidade
FROM teste_funcionalidade INNER JOIN teste ON teste_funcionalidade.IdTeste = teste.id WHERE idFuncionalidade <> '' AND
teste.MesAno > '2014-09-30' )) as func_com_testes_out ON chamado_funcionalidade.idFuncionalidade = func_com_testes_out.id WHERE (DataInicial <= '2014-09-30');
1.4.2. Chamados até outubro de 2014 que não possuem testes SELECT * FROM chamado
INNER JOIN chamado_funcionalidade
ON chamado.IdOriginal = chamado_funcionalidade.IdOriginalChamado INNER JOIN
(SELECT id FROM funcionalidade WHERE id NOT IN
(SELECT DISTINCT idFuncionalidade FROM teste_funcionalidade
WHERE idFuncionalidade <> '' UNION
SELECT DISTINCT idFuncionalidade
FROM teste_funcionalidade INNER JOIN teste ON teste_funcionalidade.IdTeste = teste.id WHERE idFuncionalidade <> '' AND
teste.MesAno > '2014-10-31' )) as func_com_testes_out ON chamado_funcionalidade.idFuncionalidade = func_com_testes_out.id WHERE (DataInicial <= '2014-10-31');
1.4.3. Chamados até novembro de 2014 que não possuem testes SELECT * FROM chamado
INNER JOIN chamado_funcionalidade
ON chamado.IdOriginal = chamado_funcionalidade.IdOriginalChamado INNER JOIN
(SELECT id FROM funcionalidade WHERE id NOT IN
(SELECT DISTINCT idFuncionalidade FROM teste_funcionalidade
WHERE idFuncionalidade <> '' UNION
SELECT DISTINCT idFuncionalidade
FROM teste_funcionalidade INNER JOIN teste ON teste_funcionalidade.IdTeste = teste.id WHERE idFuncionalidade <> '' AND
teste.MesAno > '2014-11-30' )) as func_com_testes_out ON chamado_funcionalidade.idFuncionalidade = func_com_testes_out.id WHERE (DataInicial <= '2014-11-30');
1.4.4. Chamados até dezembro de 2014 que não possuem testes SELECT * FROM chamado
INNER JOIN chamado_funcionalidade
ON chamado.IdOriginal = chamado_funcionalidade.IdOriginalChamado INNER JOIN
(SELECT id FROM funcionalidade WHERE id NOT IN
(SELECT DISTINCT idFuncionalidade FROM teste_funcionalidade
WHERE idFuncionalidade <> '' UNION
SELECT DISTINCT idFuncionalidade
FROM teste_funcionalidade INNER JOIN teste ON teste_funcionalidade.IdTeste = teste.id WHERE idFuncionalidade <> '' AND
teste.MesAno > '2014-12-31' )) as func_com_testes_out ON chamado_funcionalidade.idFuncionalidade = func_com_testes_out.id WHERE (DataInicial <= '2014-12-31');
1.4.5. Chamados até janeiro de 2015 que não possuem testes
SELECT * FROM chamado
INNER JOIN chamado_funcionalidade
ON chamado.IdOriginal = chamado_funcionalidade.IdOriginalChamado INNER JOIN
(SELECT id FROM funcionalidade WHERE id NOT IN
(SELECT DISTINCT idFuncionalidade FROM teste_funcionalidade
WHERE idFuncionalidade <> '' UNION
SELECT DISTINCT idFuncionalidade
FROM teste_funcionalidade INNER JOIN teste ON teste_funcionalidade.IdTeste = teste.id WHERE idFuncionalidade <> '' AND
teste.MesAno > '2015-01-31' )) as func_com_testes_out ON chamado_funcionalidade.idFuncionalidade = func_com_testes_out.id WHERE (DataInicial <= '2015-01-31');
1.4.6. Chamados até fevereiro de 2015 que não possuem testes
SELECT * FROM chamado
INNER JOIN chamado_funcionalidade
ON chamado.IdOriginal = chamado_funcionalidade.IdOriginalChamado INNER JOIN
(SELECT id FROM funcionalidade WHERE id NOT IN
(SELECT DISTINCT idFuncionalidade FROM teste_funcionalidade
UNION
SELECT DISTINCT idFuncionalidade
FROM teste_funcionalidade INNER JOIN teste ON teste_funcionalidade.IdTeste = teste.id WHERE idFuncionalidade <> '' AND
teste.MesAno > '2015-02-28' )) as func_com_testes_out ON chamado_funcionalidade.idFuncionalidade = func_com_testes_out.id WHERE (DataInicial <= '2015-02-28');
1.4.7. Chamados até março de 2015 que não possuem testes SELECT * FROM chamado
INNER JOIN chamado_funcionalidade
ON chamado.IdOriginal = chamado_funcionalidade.IdOriginalChamado INNER JOIN
(SELECT id FROM funcionalidade WHERE id NOT IN
(SELECT DISTINCT idFuncionalidade FROM teste_funcionalidade
WHERE idFuncionalidade <> '' UNION
SELECT DISTINCT idFuncionalidade
FROM teste_funcionalidade INNER JOIN teste ON teste_funcionalidade.IdTeste = teste.id WHERE idFuncionalidade <> '' AND
teste.MesAno > '2015-03-31' )) as func_com_testes_out ON chamado_funcionalidade.idFuncionalidade = func_com_testes_out.id WHERE (DataInicial <= '2015-03-31');
1.5.Quais chamados possuem testes? SELECT * FROM chamado
INNER JOIN chamado_funcionalidade
ON chamado.IdOriginal = chamado_funcionalidade.IdOriginalChamado INNER JOIN
(SELECT * FROM funcionalidade WHERE id IN
(SELECT DISTINCT idFuncionalidade FROM teste_funcionalidade WHERE idFuncionalidade <> '')) as funcionalidadeComTestes
ON (chamado_funcionalidade.idFuncionalidade = funcionalidadeComTestes.id);
1.5.1. Chamados que possuem testes até setembro de 2014
SELECT * FROM chamado
INNER JOIN chamado_funcionalidade
ON chamado.IdOriginal = chamado_funcionalidade.IdOriginalChamado INNER JOIN
(SELECT * FROM funcionalidade WHERE id IN
(SELECT DISTINCT idFuncionalidade FROM teste_funcionalidade
INNER JOIN teste
WHERE idFuncionalidade <> '' AND teste.MesAno <= '2014-09-30')) as funcio- nalidadeComTestes
ON (chamado_funcionalidade.idFuncionalidade = funcionalidadeComTestes.id) WHERE chamado.DataInicial <= '2014-09-30';
1.5.2. Chamados que possuem testes até outubro de 2014 SELECT * FROM chamado
INNER JOIN chamado_funcionalidade
ON chamado.IdOriginal = chamado_funcionalidade.IdOriginalChamado INNER JOIN
(SELECT * FROM funcionalidade WHERE id IN
(SELECT DISTINCT idFuncionalidade FROM teste_funcionalidade
INNER JOIN teste
ON teste_funcionalidade.IdTeste = teste.Id
WHERE idFuncionalidade <> '' AND teste.MesAno <= '2014-10-31')) as funcio- nalidadeComTestes
ON (chamado_funcionalidade.idFuncionalidade = funcionalidadeComTestes.id) WHERE chamado.DataInicial <= '2014-10-31';
1.5.3. Chamados que possuem testes até novembro de 2014 SELECT * FROM chamado
INNER JOIN chamado_funcionalidade
ON chamado.IdOriginal = chamado_funcionalidade.IdOriginalChamado INNER JOIN
(SELECT * FROM funcionalidade WHERE id IN
(SELECT DISTINCT idFuncionalidade FROM teste_funcionalidade
INNER JOIN teste
ON teste_funcionalidade.IdTeste = teste.Id
WHERE idFuncionalidade <> '' AND teste.MesAno <= '2014-11-30')) as funcio- nalidadeComTestes
ON (chamado_funcionalidade.idFuncionalidade = funcionalidadeComTestes.id) WHERE chamado.DataInicial <= '2014-11-30';
1.5.4. Chamados que possuem testes até dezembro de 2014
SELECT * FROM chamado
INNER JOIN chamado_funcionalidade
ON chamado.IdOriginal = chamado_funcionalidade.IdOriginalChamado INNER JOIN
(SELECT * FROM funcionalidade WHERE id IN
(SELECT DISTINCT idFuncionalidade FROM teste_funcionalidade
INNER JOIN teste
ON teste_funcionalidade.IdTeste = teste.Id
WHERE idFuncionalidade <> '' AND teste.MesAno <= '2014-12-31')) as funcio- nalidadeComTestes
WHERE chamado.DataInicial <= '2014-12-31';
1.5.5. Chamados que possuem testes até janeiro de 2015
SELECT * FROM chamado
INNER JOIN chamado_funcionalidade
ON chamado.IdOriginal = chamado_funcionalidade.IdOriginalChamado INNER JOIN
(SELECT * FROM funcionalidade WHERE id IN
(SELECT DISTINCT idFuncionalidade FROM teste_funcionalidade
INNER JOIN teste
ON teste_funcionalidade.IdTeste = teste.Id
WHERE idFuncionalidade <> '' AND teste.MesAno <= '2015-01-31')) as funcio- nalidadeComTestes
ON (chamado_funcionalidade.idFuncionalidade = funcionalidadeComTestes.id) WHERE chamado.DataInicial <= '2015-01-31';
1.5.6. Chamados que possuem testes até fevereiro de 2015
SELECT * FROM chamado
INNER JOIN chamado_funcionalidade
ON chamado.IdOriginal = chamado_funcionalidade.IdOriginalChamado INNER JOIN
(SELECT * FROM funcionalidade WHERE id IN
(SELECT DISTINCT idFuncionalidade FROM teste_funcionalidade
INNER JOIN teste
ON teste_funcionalidade.IdTeste = teste.Id
WHERE idFuncionalidade <> '' AND teste.MesAno <= '2015-02-28')) as funcio- nalidadeComTestes
ON (chamado_funcionalidade.idFuncionalidade = funcionalidadeComTestes.id) WHERE chamado.DataInicial <= '2015-02-28';
1.5.7. Chamados que possuem testes até março de 2015
SELECT * FROM chamado
INNER JOIN chamado_funcionalidade
ON chamado.IdOriginal = chamado_funcionalidade.IdOriginalChamado INNER JOIN
(SELECT * FROM funcionalidade WHERE id IN
(SELECT DISTINCT idFuncionalidade FROM teste_funcionalidade
INNER JOIN teste
ON teste_funcionalidade.IdTeste = teste.Id
WHERE idFuncionalidade <> '' AND teste.MesAno <= '2015-03-31')) as funcio- nalidadeComTestes
ON (chamado_funcionalidade.idFuncionalidade = funcionalidadeComTestes.id) WHERE chamado.DataInicial <= '2015-03-31';
1.6.Chamados por mês (histórico)
SELECT count(*), YEAR(DataInicial), MONTH(DataInicial) FROM CSV_DB.CHAMADO
GROUP BY YEAR(DataInicial), MONTH(DataInicial);
1.7.Quais testes não possuem chamados?
SELECT * FROM teste
INNER JOIN teste_funcionalidade
ON teste.Id = teste_funcionalidade.IdTeste INNER JOIN
(SELECT * FROM funcionalidade WHERE id NOT IN
(SELECT DISTINCT idFuncionalidade FROM chamado_funcionalidade WHERE idFuncionalidade <> '')) as funcionalidadeSemChamados
ON (teste_funcionalidade.idFuncionalidade = funcionalidadeSemChamados.id);
1.7.1. Testes que não possuem chamados até setembro de 2014
SELECT * FROM teste
INNER JOIN teste_funcionalidade
ON teste.Id = teste_funcionalidade.IdTeste INNER JOIN
(SELECT id FROM funcionalidade WHERE id NOT IN
( SELECT DISTINCT idFuncionalidade FROM chamado_funcionalidade WHERE idFuncionalidade <> ''
UNION
SELECT DISTINCT idFuncionalidade
FROM chamado_funcionalidade INNER JOIN chamado ON chamado_funcionalidade.IdOriginalChamado = cha- mado.id
WHERE idFuncionalidade <> '' AND
chamado.DataInicial > '2014-09-30' )) as funcionalidade- SemChamados
ON (teste_funcionalidade.idFuncionalidade = funcionalidadeSemChamados.id) WHERE teste.MesAno <= '2014-09-30';
1.7.2. Testes que não possuem chamados até outubro de 2014
SELECT * FROM teste
INNER JOIN teste_funcionalidade
ON teste.Id = teste_funcionalidade.IdTeste INNER JOIN
WHERE id NOT IN
( SELECT DISTINCT idFuncionalidade FROM chamado_funcionalidade WHERE idFuncionalidade <> ''
UNION
SELECT DISTINCT idFuncionalidade
FROM chamado_funcionalidade INNER JOIN chamado ON chamado_funcionalidade.IdOriginalChamado = cha- mado.id
WHERE idFuncionalidade <> '' AND
chamado.DataInicial > '2014-10-31' )) as funcionalidade- SemChamados
ON (teste_funcionalidade.idFuncionalidade = funcionalidadeSemChamados.id) WHERE teste.MesAno <= '2014-10-31';
1.7.3. Testes que não possuem chamados até novembro de 2014
SELECT * FROM teste
INNER JOIN teste_funcionalidade
ON teste.Id = teste_funcionalidade.IdTeste INNER JOIN
(SELECT id FROM funcionalidade WHERE id NOT IN
( SELECT DISTINCT idFuncionalidade FROM chamado_funcionalidade WHERE idFuncionalidade <> ''
UNION
SELECT DISTINCT idFuncionalidade
FROM chamado_funcionalidade INNER JOIN chamado ON chamado_funcionalidade.IdOriginalChamado = cha- mado.id
WHERE idFuncionalidade <> '' AND
chamado.DataInicial > '2014-11-30' )) as funcionalidade- SemChamados
ON (teste_funcionalidade.idFuncionalidade = funcionalidadeSemChamados.id) WHERE teste.MesAno <= '2014-11-30';
1.7.4. Testes que não possuem chamados até dezembro de 2014
SELECT * FROM teste
INNER JOIN teste_funcionalidade
ON teste.Id = teste_funcionalidade.IdTeste INNER JOIN
(SELECT id FROM funcionalidade WHERE id NOT IN
( SELECT DISTINCT idFuncionalidade FROM chamado_funcionalidade WHERE idFuncionalidade <> ''
UNION
SELECT DISTINCT idFuncionalidade
FROM chamado_funcionalidade INNER JOIN chamado ON chamado_funcionalidade.IdOriginalChamado = cha- mado.id
WHERE idFuncionalidade <> '' AND
chamado.DataInicial > '2014-12-31' )) as funcionalidade- SemChamados
ON (teste_funcionalidade.idFuncionalidade = funcionalidadeSemChamados.id) WHERE teste.MesAno <= '2014-12-31';
1.7.5. Testes que não possuem chamados até janeiro de 2015
SELECT * FROM teste
INNER JOIN teste_funcionalidade
ON teste.Id = teste_funcionalidade.IdTeste INNER JOIN
(SELECT id FROM funcionalidade WHERE id NOT IN
( SELECT DISTINCT idFuncionalidade FROM chamado_funcionalidade WHERE idFuncionalidade <> ''
UNION
SELECT DISTINCT idFuncionalidade
FROM chamado_funcionalidade INNER JOIN chamado ON chamado_funcionalidade.IdOriginalChamado = cha- mado.id
WHERE idFuncionalidade <> '' AND
chamado.DataInicial > '2015-01-31' )) as funcionalidade- SemChamados
ON (teste_funcionalidade.idFuncionalidade = funcionalidadeSemChamados.id) WHERE teste.MesAno <= '2015-01-31';
1.7.6. Testes que não possuem chamados até fevereiro de 2015
SELECT * FROM teste
INNER JOIN teste_funcionalidade
ON teste.Id = teste_funcionalidade.IdTeste INNER JOIN
(SELECT id FROM funcionalidade WHERE id NOT IN
( SELECT DISTINCT idFuncionalidade FROM chamado_funcionalidade WHERE idFuncionalidade <> ''
UNION
SELECT DISTINCT idFuncionalidade
FROM chamado_funcionalidade INNER JOIN chamado ON chamado_funcionalidade.IdOriginalChamado = cha- mado.id
WHERE idFuncionalidade <> '' AND
chamado.DataInicial > '2015-02-28' )) as funcionalidade- SemChamados
ON (teste_funcionalidade.idFuncionalidade = funcionalidadeSemChamados.id) WHERE teste.MesAno <= '2015-02-28';
SELECT * FROM teste
INNER JOIN teste_funcionalidade
ON teste.Id = teste_funcionalidade.IdTeste INNER JOIN
(SELECT id FROM funcionalidade WHERE id NOT IN
( SELECT DISTINCT idFuncionalidade FROM chamado_funcionalidade WHERE idFuncionalidade <> ''
UNION
SELECT DISTINCT idFuncionalidade
FROM chamado_funcionalidade INNER JOIN chamado ON chamado_funcionalidade.IdOriginalChamado = cha- mado.id
WHERE idFuncionalidade <> '' AND
chamado.DataInicial > '2015-03-31' )) as funcionalidade- SemChamados
ON (teste_funcionalidade.idFuncionalidade = funcionalidadeSemChamados.id) WHERE teste.MesAno <= '2015-03-31';
1.8.Quais são os testes que não tem funcionalidade específica?
SELECT * FROM TESTE WHERE id IN
(SELECT DISTINCT idTeste FROM TESTE_FUNCIONALIDADE WHERE idFun- cionalidade = '');
1.9.Testes por mês (histórico)
SELECT COUNT(*), YEAR(MesAno), MONTH(MesAno) FROM TESTE
GROUP BY YEAR(MesAno), MONTH(MesAno);
1.10. Qual a relação entre chamados e testes
SELECT YEAR(t.MesAno), MONTH(t.MesAno), f.id, f.Descricao, count(tf.IdFuncionalidade) 'Quantidade'
FROM TESTE_FUNCIONALIDADE tf INNER JOIN TESTE t ON tf.IdTeste = t.id LEFT JOIN FUNCIONALIDADE f
ON tf.IdFuncionalidade = f.id
GROUP BY YEAR(t.MesAno), MONTH(t.MesAno), f.id, f.Descricao;
SELECT YEAR(c.datainicial), MONTH(c.DataInicial), f.id, f.Descricao, count(f.id) 'Quantidade'
FROM CHAMADO_FUNCIONALIDADE cf INNER JOIN CHAMADO c ON cf.IdOriginalChamado = c.IdOriginal INNER JOIN FUNCIONALIDADE f ON cf.IdFuncionalidade = f.id