Función count_big de SQL Server

Función Count_Big en SQL Server

La función Count_big retorna la cantidad de elementos encontrados en un agrupamiento. La función Count_big es similar a la función de agregado Count. Count_Big retorna un tipo de dato bigint, mientras que Count retorna un tipo de dato int.

Sintaxis
COUNT_BIG ( { [ [ ALL | DISTINCT ] expresión ] | * } )

Donde
ALL
La función agregada se aplica a todos los valores. ALL es el valor predeterminado.
DISTINCT
Indica que COUNT_BIG devuelva el número de valores no nulos únicos.
expresión
Una expresión de cualquier tipo. COUNT_BIG no admite funciones agregadas ni subconsultas

Para más información ver:
Funciones de agregado
Vistas en SQL Server
Índices en SQL Server

Usando la base de datos Northwind
use Northwind
go

Ejercicios

Ejercicio 1

Listar los empleados y la cantidad de órdenes de cada uno.
select
E.LastName,
E.FirstName,
E.Address,
COUNT_BIG(O.OrderId) As 'Cantidad de órdenes'
from dbo.Employees As E
join dbo.Orders As O on E.EmployeeID = O.EmployeeID
group by E.LastName, E.FirstName, E.Address
go
El resultado se muestra en la siguiente imagen

Listado de empleados y la cantidad de órdenes

Ejercicio 2

Listar los productos, en cuantas órdenes se vendieron y la cantidad de unidades vendidas
select
P.ProductID,
P.ProductName,
P.QuantityPerUnit,
COUNT_BIG(D.Quantity) As 'Cantidad de Órdenes',
sum(D.Quantity) As 'Cantidad de Unidades'
from dbo.Products As P
join dbo.[Order Details] As D on P.ProductID = D.ProductID
group by P.ProductID, P.ProductName,P.QuantityPerUnit
go
El resultado se muestra en la siguiente imagen

Productos, cantidad de órdenes y cantidad de unidades vendidas.

Ejercicio 3

Crear una vista con los proveedores, la cantidad de productos y la cantidad de unidades en stock, luego crear un índice para la vista.

El campo UnitsInStock no debe soportar valores null
Alter table Products alter column UnitsInStock smallint not null
go

Create or alter view vistaProveedoresProductosStock
with schemaBinding
As
Select
S.SupplierID As 'Cód. Proveedor',
S.CompanyName As 'Proveedor',
COUNT_BIG(*) As 'Cantidad Productos' ,
sum(P.UnitsInStock) As 'Unidades'
from dbo.Products As P
join dbo.Suppliers As S on P.SupplierID = S.SupplierID
group by S.SupplierID, S.CompanyName
go

Para visualizar los registros de la vista
select * from vistaProveedoresProductosStock
go
El resultado se muestra en la siguiente imagen.

Proveedores y productos en stock.

Crear el índice
drop index if exists vistaProveedoresIDXa on vistaProveedoresProductosStock
go
Create unique clustered index vistaProveedoresIDXa
on vistaProveedoresProductosStock([Cód. Proveedor], [Proveedor])
go

Ejercicio 4

Listado de los clientes, sus órdenes y el monto total de las mismas.
select
C.CompanyName As 'Cliente',
COUNT_BIG(distinct D.OrderID) As 'Cantidad de órdenes',
sum((D.Quantity * D.UnitPrice) *(1-D.Discount)) As 'Monto total'
from dbo.Customers As C
join dbo.Orders As O on C.CustomerID = O.CustomerID
join dbo.[Order Details] As D on O.OrderID = D.OrderID
group by C.CompanyName
go
El resultado se muestre en la siguiente imagen.

Clientes, cantidad de órdenes y total comprado.

Para comprobar el resultado, calcular el total de las órdenes del clientes ALFKI, el valor es 4272.99
Total de las órdenes de Alfreds Futerkiste
select
sum((D.Quantity * D.UnitPrice) *(1-D.Discount))
from dbo.[Order Details] As D
where D.OrderID in
(select O.OrderID from dbo.Orders As O
where O.CustomerID = 'ALFKI')
go
El resultado se muestre en la siguiente imagen.

Note el mismo resultado de la imagen anterior.