2016-03-19 6 views
1

私がオーダーラインのテーブルを持っているが、このSQL max(count)関数と値を照合する方法は?

enter image description here

のように見える私はベストセラーである、とピザの量が売られているピザ知っていただきたいと思います。

私は、クエリを試してみた:

select sum(quantity), pizza_name from order_line group by pizza_name; 

それは

私が欲しいものはほとんどですが、私は最大の機能の追加を開始するとき、それはピザの名前と一致しませんでした

enter image description here

を返します。ピザの総販売数量は

です。

select MAX(sum(quantity)), pizza_name from order_line group by pizza_name; 

それは次のエラーが返されます。

"not a single-group group function"

私は、サブクエリを使用してこれを実現することができると思いますが、私はこれを行うにはどのようには考えています。

答えて

1

これにはmaxは必要ありません。

select sum(quantity), pizza_name 
from order_line 
group by pizza_name 
order by sum(quantity) 
fetch first 1 row only; 

それとも、あなたがそのようなすべてのピザをしたい場合は、rank()を使用します:

select p.* 
from (select sum(quantity) as quantity, pizza_name, 
      rank() over (order by sum(quantity) desc) as seqnum 
     from order_line 
     group by pizza_name 
    ) p 
where seqnum = 1; 
+0

これは本当に役立ちます!ちなみに、私はsub_queryを使ってこれを達成できますか? – Felicia

0
一つだけのピザをしたい場合は、 order byfetch first 1 row only(または、そのような limittopと同様のもの)を使用することができます

クエリの両方が和(量)を得るためにpizza_nameにより同じ所望の結果を

SELECT PIZZA_NAME, 
    SUM(QUANTITY) "Total Quant" 
FROM Order_line 
GROUP BY PIZZA_NAME 
ORDER BY "Total Quant" DESC 
FETCH FIRST 1 row only; 

SELECT PIZZA_NAME, "Total Quantity" FROM (
SELECT PIZZA_NAME,SUM(QUANTITY) "Total Quantity", RANK() OVER (ORDER BY SUM(QUANTITY) DESC) T FROM Order_line GROUP BY PIZZA_NAME 
) query1 where query1.T=1 ; 
+0

これは、6時間前にGordon Linoffによって与えられたものと同じ答えです。 –

+0

私は決して他の人が彼らの答えに投稿するものは見ません:)。私は質問をして、私はそれに答えようとします、もっと私のための練習です。 – Sandeep

0

あなた基を与えますピザ名ごとに。

さらにに集計すると、合計がMAXで表示されますが、3つのピザ名のうちのどれを結果に含めるかは指定しません。 pizza_nameにも集計関数が必要ですが、これは持っていません。したがって、エラー。

クエリを使用する場合は、ピザ名に適切な集計関数(KEEP DENSE_RANK FIRST/LAST)を適用する必要があります。

select 
    max(sum(quantity)), 
    max(pizza_name) keep (dense_rank last order by sum(quantity)) 
from order_line 
group by pizza_name; 

しかし、一方で、ゴードンの質問は私の意見では読みやすくなっています。そしてもう一方では、この二重の集約はOracle固有でありSQL標準ではありません。経験の浅い読者は、クエリがGROUP BY句にもかかわらず1つの結果行を生成することが混乱する可能性があります。

関連する問題