私が勉強している本では解決されていない練習です。 登録された情報があるすべての月間に月間売上高が最も高い売り手を見つけることが目標です。 問題は、タプルを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
いくつかのサンプルデータとそれを取得しようとしている結果を共有できますか? – Mureinik
@Mureinikあなたが何を意味するかわからない、取得しようとしている結果は、文が尋ねるもの(?)です。 問題は、売り上げごとに1ヶ月間に分割し、売り手でグループ化し、レコードがあるため月間に売り上げを増やしたセールスマンを取得する方法がわかりません。 –
Mureinikが求めているのは、「あなたの入力データの構造は何か」と「あなたが望む正確な出力形式は何か」です。たとえば、入力データの場合、あなたは何を持っていますか?セールスマン、取引日、販売数量の列を含む表日付は任意の月の任意の日付ですか?または、入力データが既に月によって要約されていますか?これらは、サンプルデータを見ることなく「推測」できないものです。そうでなければ、あなたからの非常に詳細な説明です。 – mathguy