このSQLコードは
集計関数はWHEREでは許可されていません
SELECT o.ID , count(p.CAT)
FROM Orders o
INNER JOIN Products p ON o.P_ID = p.P_ID
WHERE count(p.CAT) > 3
GROUP BY o.ID;
このエラーを回避するにはどうすればよいですか?
次のように、WHERE
句をHAVING
に置き換えます。
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
はWHERE
に似ています。両方とも結果レコードのフィルタリングに使用されますが、HAVING
は集約データのフィルタリングに使用されます(GROUP BY
使用されている)。
HAVING
の代わりにWHERE
句を使用します
これを試して:
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
自己結合は、注文テーブルにリストされた価格の中央値よりも高い価格をリストする条件がある場合、結合でトスになりますか?
例えば。 order_item、Order_Price
集計関数はWHERE句で使用できないため>
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