2017-04-17 11 views
0

私が勉強している本では解決されていない練習です。 登録された情報があるすべての月間に月間売上高が最も高い売り手を見つけることが目標です。 問題は、タプルを1か月の期間に分割する方法がわからないことです。SQL問合せでこの問合せを解決するにはどうすればよいですか?

Table Sellers 

Id_seller 
Name_Product 

そして、他の一つは次のとおりです:

最初の表は、ある

Table Product 

Name_Product 
View_datetime 
Budget 

私は何をしましたか?

私はこのクエリを作った:

SELECT id_seller FROM(SELECT id_seller, COUNT(id_seller) 
FROM SELLERS INNER JOIN PRODUCT 
ON SELLERS.name_product = PRODUCT.name_product 
GROUP BY id_seller HAVING COUNT(id_seller)>= 1 
ORDER BY 2 DESC) 
WHERE ROWNUM = 1; 

クエリは私に「レコードがあるので、毎月」文が尋ねると、ほとんどの販売は行ってますが、していない、売り手を返します。何か案は?私はとても失われています...

アイデアは、今月の各セールスマン(sysdate)の合計売上を2か月前の1ヶ月前のものと比較することです。古いレコードがある限り。そして各売り手から最大限に得る。そして、あなたは前のリストからより多くの売り上げで売り手を印刷します。売り手が今月(4月、sysdate)に400品目を販売するが、昨年10月に販売した別の売り手が2番目の売り手になる。それは私がする方法を知らないものです。

おかげ^^あなたが作るためにいくつかのポイントがあります

select MonthName, id_seller, max(TotalSales) from ( select to_char(sysdate, 'Month') MonthName, sellers.id_seller, count(sellers.id_seller) TotalSales from sellers inner join product on sellers.name_product = product.name_product group by to_char(view_datetime, 'Month'), sellers.id_seller ) tab group by MonthName, id_seller

+0

いくつかのサンプルデータとそれを取得しようとしている結果を共有できますか? – Mureinik

+0

@Mureinikあなたが何を意味するかわからない、取得しようとしている結果は、文が尋ねるもの(?)です。 問題は、売り上げごとに1ヶ月間に分割し、売り手でグループ化し、レコードがあるため月間に売り上げを増やしたセールスマンを取得する方法がわかりません。 –

+0

Mureinikが求めているのは、「あなたの入力データの構造は何か」と「あなたが望む正確な出力形式は何か」です。たとえば、入力データの場合、あなたは何を持っていますか?セールスマン、取引日、販売数量の列を含む表日付は任意の月の任意の日付ですか?または、入力データが既に月によって要約されていますか?これらは、サンプルデータを見ることなく「推測」できないものです。そうでなければ、あなたからの非常に詳細な説明です。 – mathguy

答えて

0

...

  • テーブルは奇妙です。テーブルsellersは、salesの方がいいと思います。
  • この例では、having count... >= 1はno-opです。行がまったくない場合、Countは0になることがあります。この場合、group-by出力には行がありません。この数をここから離れることができます。
  • 月額販売を取得するには、月をgroup byに追加するだけです。私。 group by id_seller, To_date(view_datetime,'YYYYMM')
+0

それは私に各売り手の総販売数を返しますが、4月の月(sysdate)のみを返します。 2ヵ月前に過去のレコードがある限り、今月の合計を1か月前のものと比較することです。そして、最大限に。@jose –

+0

私の間違い。私は、group by節でview_datetimeを使ってクエリを変更しました。これにより、売り手IDによって月ごとに最も高い売上が返されます。あなたはその後、レコードセットを反復処理して比較を取得することができます – userDee

0

このクエリを試みることができる

+0

私はそれをうまく説明しませんでした...アイデアは今月の各セールスマン(sysdate)の合計売上を1ヶ月前のものと比較することです2ヶ月前...古いレコードがある限り。そして各売り手から最大限に得る。そして、あなたは前のリストからより多くの売り上げで売り手を印刷します。売り手が今月(4月、sysdate)に400品目を販売するが、昨年10月に販売した別の売り手が2番目の売り手になる。それは私がする方法を知らないものです。 @AnoE –

+0

そのためには、上記のような最初のグループを作成してから、回答を再度グループ化し(最大)、売り上げが最大の売り手を選んでください。 – AnoE

+0

私は本当にそれをやろうとしていますが、解決していません。あなたはplsの例でそれをililrateできますか? –

関連する問題