La siguiente consulta nos da la facturación por cliente en cada año.
SELECT
YEAR(F.FECHA_VENTA) AS AÑO,
C.DNI AS DNI_CLIENTE,
C.NOMBRE AS NOMBRE_CLIENTE,
ROUND(SUM(IFA.CANTIDAD * IFA.PRECIO), 2) AS FACTURACIÓN
FROM
FACTURAS F
INNER JOIN
TABLA_DE_CLIENTES C
ON
F.DNI = C.DNI
INNER JOIN
ITEMS_FACTURAS IFA
ON
F.NUMERO = IFA.NUMERO
GROUP BY
YEAR(F.FECHA_VENTA),
C.DNI
ORDER BY
YEAR(F.FECHA_VENTA),
CAST(C.DNI AS UNSIGNED); -- Otra forma de convertir texto a número
Se debe de agrupar por el año de la venta y por DNI (no por nombre del cliente) ya que pueden existir dos personas llamadas Erica Carvajo pero el DNI es el que las distingue



Ahora hacemos la subconsulta especificando el año 2016:
SELECT
CONCAT('El cliente ',
NOMBRE_CLIENTE,
' facturó ',
CONVERT(FACTURACIÓN, CHAR(20)),
' pesos mexicanos durante el año ',
CONVERT(AÑO, CHAR(4))) AS LISTANDO_CON_EXPRESIÓN_NATURAL
FROM (
SELECT
YEAR(F.FECHA_VENTA) AS AÑO,
C.DNI AS DNI_CLIENTE,
C.NOMBRE AS NOMBRE_CLIENTE,
ROUND(SUM(IFA.CANTIDAD * IFA.PRECIO), 2) AS FACTURACIÓN
FROM
FACTURAS F
INNER JOIN
TABLA_DE_CLIENTES C
ON
F.DNI = C.DNI
INNER JOIN
ITEMS_FACTURAS IFA
ON
F.NUMERO = IFA.NUMERO
GROUP BY
YEAR(F.FECHA_VENTA),
C.DNI
ORDER BY
YEAR(F.FECHA_VENTA),
CAST(C.DNI AS UNSIGNED)) AS FACTURACIÓN_CLIENTE_POR_AÑO
WHERE
AÑO = 2016;

Creamos la VIEW de la primer consulta:
CREATE VIEW
FACTURACIÓN_CLIENTE_POR_AÑO
AS
SELECT
YEAR(F.FECHA_VENTA) AS AÑO,
C.DNI AS DNI_CLIENTE,
C.NOMBRE AS NOMBRE_CLIENTE,
ROUND(SUM(IFA.CANTIDAD * IFA.PRECIO), 2) AS FACTURACIÓN
FROM
FACTURAS F
INNER JOIN
TABLA_DE_CLIENTES C
ON
F.DNI = C.DNI
INNER JOIN
ITEMS_FACTURAS IFA
ON
F.NUMERO = IFA.NUMERO
GROUP BY
YEAR(F.FECHA_VENTA),
C.DNI
ORDER BY
YEAR(F.FECHA_VENTA),
CAST(C.DNI AS UNSIGNED);
Y la usamos para resolver el ejercicio:
SELECT
CONCAT('El cliente ',
NOMBRE_CLIENTE,
' facturó ',
CONVERT(FACTURACIÓN, CHAR(20)),
' pesos mexicanos durante el año ',
CONVERT(AÑO, CHAR(4))) AS LISTANDO_CON_EXPRESIÓN_NATURAL
FROM
FACTURACIÓN_CLIENTE_POR_AÑO
WHERE
AÑO = 2016;

Sé que en la VIEW 'FACTURACIÓN_CLIENTE_POR_AÑO' y en la subconsulta podemos filtrar por año (2016) pero lo dejé así para que sea una consulta más general y se pueda filtrar fuera de la VIEW y de la subconsulta.
¿Qué opinan de mi propuesta?
Y me surgió otra duda: ¿La facturación es con el impuesto?
Porque entonces la facturación cambia ya que a todo lo que hice se le debe de agregar el impuesto:
-- Facturación + el impuesto de esa facturación
ROUND(SUM(IFA.CANTIDAD * IFA.PRECIO) + SUM(F.IMPUESTO * IFA.CANTIDAD * IFA.PRECIO), 2) AS FACTURACIÓN,
Así ya solo se tendrían que cambiar:
- La línea 8 de la VIEW
- Y la línea 13 de la consulta que lleva la subconsulta
por el cálculo anterior.