Olá, para resolver o exercício 8 fiz o codigo:
WITH VendasEletronicos AS (
SELECT c.nome_categoria AS Categoria, strftime('%Y', v.data_venda) AS Ano,
COUNT(v.id_venda) AS Qtd_Vendida
FROM categorias c
JOIN produtos p ON p.categoria_id = c.id_categoria
JOIN itens_venda iv ON iv.produto_id = p.id_produto
JOIN vendas v ON v.id_venda = iv.venda_id
WHERE c.nome_categoria = 'Eletrônicos'
GROUP BY Ano
), VendasVestuario AS (
SELECT c.nome_categoria AS Categoria, strftime('%Y', v.data_venda) AS Ano,
COUNT(v.id_venda) AS Qtd_Vendida
FROM categorias c
JOIN produtos p ON p.categoria_id = c.id_categoria
JOIN itens_venda iv ON iv.produto_id = p.id_produto
JOIN vendas v ON v.id_venda = iv.venda_id
WHERE c.nome_categoria = 'Vestuário'
GROUP BY Ano
), Anos AS (
SELECT Ano FROM VendasEletronicos
UNION
SELECT Ano FROM VendasVestuario
)
sELECT a.Ano, vv.Qtd_Vendida, ve.Qtd_Vendida
From Anos a
JOIN VendasVestuario vv on a.ano = vv.ano
Join VendasEletronicos ve ON ve.ano = vv.ano
group by a.ano;
A dúvida é se tem algum jeito dessa consulta ser mais simples, retornando o mesmo resultado.