Indexacion query consulta SQL – Stack Overflow en español


Puedes simplemente añadir el cálculo a la tabla derivada que ya tienes en la consulta:

Por ejemplo:

Select TOP 1 
         p.*
       , d.COMPRAS
       , d.ValorMonetario
From (
    SELECT   a.ClienteID
           , SUM(Cantidad) as COMPRAS
           , sum(TotalPrice) as ValorMonetario
      from dbo.Venta a
     GROUP by a.ClienteID
    ) d inner join dbo.Cliente p on d.ClienteID = p.ClienteID
order by COMPRAS desc

Dicho esto, si bien una venta es una compra, vista del otro lado, te recomiendo no mezclar los términos dentro del código fuente… es mejor ver las cosas desde un solo punto de vista, al menos, a nivel del código. Esto, porque el total de la suma de la cantidad de la tabla de ventas, de pronto se llama compras. Eso lo hace confuso.

Otra cosa que haría es, si el motor lo soporta, utilizar un CTE en lugar de una tabla derivada. Es un cambio trivial al inicio, pero hace que la consulta sea más fácil de extender en el futuro.

with
ResumenVentas as (
SELECT   a.ClienteID
       , SUM(Cantidad) as CantidadVentas
       , sum(TotalPrice) as ValorVentas
  from dbo.Venta a
 GROUP by a.ClienteID
)
Select TOP 1 
         c.*
       , rv.CantidadVentas
       , rv.ValorVentas
 from ResumenVentas rv
      inner join dbo.Cliente c on c.ClienteID = rv.ClienteID
order by rv.CantidadVentas desc