Skip to content

3.1 WHERE x HAVING

Adriane Ribeiro edited this page Nov 18, 2022 · 3 revisions
  • HAVING é utilizado após o WHERE.
  • Para filtrar dados, WHERE é mais eficiente, dessa forma:

Usar WHERE para filtrar registros em vez de having.

Usar having para agregar dados.

# [RUIM]

# Carrega os dados, para depois filtrar

SELECT Customers.CustomerID, Customers.Name, Count(Sales.SalesID)
FROM Customers
   INNER JOIN Sales
   ON Customers.CustomerID = Sales.CustomerID
GROUP BY Customers.CustomerID, Customers.Name
HAVING Sales.LastSaleDate BETWEEN '1/1/2016' AND '12/31/2016'

# [BOM]

SELECT Customers.CustomerID, Customers.Name, Count(Sales.SalesID)
FROM Customers
  INNER JOIN Sales
  ON Customers.CustomerID = Sales.CustomerID
WHERE Sales.LastSaleDate BETWEEN '1/1/2016' AND '12/31/2016'
GROUP BY Customers.CustomerID, Customers.Name

# Uso correto do having

SELECT Customers.CustomerID, Customers.Name, Count(Sales.SalesID)
FROM Customers
   INNER JOIN Sales
   ON Customers.CustomerID = Sales.CustomerID
WHERE Sales.LastSaleDate BETWEEN '1/1/2016' AND '12/31/2016'
GROUP BY Customers.CustomerID, Customers.Name
HAVING Count(Sales.SalesID) > 5

Clone this wiki locally