2014-01-08 5 views

Antwort

45

Ersetzen WHERE Klausel mit HAVING, wie folgt aus:

SELECT o.ID , count(p.CAT) 
FROM Orders o 
INNER JOIN Products p ON o.P_ID = p.P_ID 
GROUP BY o.ID 
HAVING count(p.CAT) > 3; 

HAVING zu WHERE ähnlich ist, dass sowohl die resultierenden Datensätze verwendet werden, ist zu filtern, aber HAVING verwendet wird, auf aggregierte Daten zu filtern (wenn GROUP BY verwendet wird).

5

Verwenden HAVING Klausel statt WHERE

Try this:

SELECT o.ID, COUNT(p.CAT) cnt 
FROM Orders o 
INNER JOIN Products p ON o.P_ID = p.P_ID 
GROUP BY o.ID HAVING cnt > 3 
0

Wird selbst für einen Wurf gehen beitreten mit verbinden, in dem wir einen Zustand haben sich die Preise aufzulisten, die größer sind als der Median der Preise in der Auftragstabelle aufgeführt?

Eg. ORDER_ITEM, Order_Price

Da Aggregatfunktionen nicht in einer WHERE-Klausel verwendet werden>

select a.order_item_product_price, count(distinct 
a.order_item_product_price) from 
default.order_items a , default.order_items b 
where a.order_item_product_price = b.order_item_product_price 
group by a.order_item_product_price 
having a.order_item_product_price > appx_median(b.order_item_product_price) 
order by a.order_item_product_price limit 10