2017-12-29 30 views
0

複数の他の列を選択しながら、単一の列に集約関数を使用して1つの列でグループ化します。これは、以下のクエリでMySQLで簡単に達成されます。1つの列を1つの集計関数でグループ化するが、複数の列をoracleで選択する方法はありますか。

SELECT sum(count),store,date,product FROM sales_log_bak where date > "2017-03-01" and date < "2017-04-05" group by date

しかし、クエリ上のOracle Database.What上では動作しません上記のクエリでMySQLによって与えられる結果を達成するために、Oracleの同等のクエリになりますか?

+0

悲しいことに、これはMySQLで* strict-mode *で作業していないときに行うことができます。しかし、それは醜いです。 –

答えて

2

あなたはAnalytic Functionsを使用することができます。Oracleで

SELECT sum(sales_count) OVER (PARTITION BY sales_date), 
    store, sales_date, product 
FROM sales_log_bak 
where sales_date > DATE '2017-03-01' and sales_date < DATE '2017-04-05'; 

注意、datecountが予約されている言葉は、あなたが列名のためにそれらを使用しないでください。

+0

上記のクエリを親切に説明できました。私は頭が "オーバー"と "パーティション分割"できませんでした。 – Flame

+1

@Flame - Wernfriedがリンクしているドキュメントを見ましたか? –

関連する問題