各店舗の売上数トップ3を抜き出し一覧表示する方法

このQ&Aのポイント
  • 上記の売上テーブルから各店舗の売上数トップ3を抜き出して一覧表示したいです。全体のトップ3であればトップ値で対応できますが、各店舗ごととなると検討がつきません。ご教示いただければ幸いです。
  • 店舗別の売上データを含むテーブルから各店舗の売上数トップ3のデータを抽出し、一覧表示したいです。全体のトップ3であれば問題ありませんが、各店舗ごとにトップ3を表示する方法を教えてください。
  • 上記のような売上テーブルから各店舗の売上数トップ3を抜き出し、一覧表示したいです。全体のトップ3ではなく、各店舗ごとにトップ3を表示する方法を教えてください。よろしくお願いします。
回答を見る
  • ベストアンサー

店舗別売上トップ3

access2002 店舗、日付、商品、売上数が登録されているテーブルから各店舗の売上数トップ3を抜き出し一覧表示させたいのですが、どのようにしたらいいのでしょうか? 売上テーブル ShopCode,Date,ItemCode,Count 00000001,2006/10,00001,70 00000001,2006/10,00002,88 00000001,2006/10,00003,109 00000001,2006/10,00004,120 00000001,2006/10,00005,61 00000002,2006/10,00001,60 00000002,2006/10,00002,128 00000002,2006/10,00003,99 00000002,2006/10,00004,92 00000002,2006/10,00005,86 00000003,2006/10,00001,10 00000003,2006/10,00002,78 00000003,2006/10,00003,80 00000003,2006/10,00004,72 00000003,2006/10,00005,98 上記のようなテーブルから作成したいのは以下のようなものです。 ShopCode,Date,ItemCode,Count 00000001,2006/10,00004,120 00000001,2006/10,00003,109 00000001,2006/10,00002,88 00000002,2006/10,00002,128 00000002,2006/10,00003,99 00000002,2006/10,00004,92 00000003,2006/10,00005,98 00000003,2006/10,00003,80 00000003,2006/10,00002,78 全体のトップ3であればトップ値で対応できるのですが、各店舗ごととなると検討がつきません。 どうぞよろしくお願いします。

  • shinp
  • お礼率33% (54/163)

質問者が選んだベストアンサー

  • ベストアンサー
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.1

ShopCode毎にCountの大きいものから連番を振り 上位3つを取り出します DCount("*","売上テーブル","ShopCode='" & [ShopCode] & "' and Count>" & [Count]) SELECT 売上テーブル.ShopCode, 売上テーブル.Date, 売上テーブル.ItemCode, 売上テーブル.Count FROM 売上テーブル WHERE (((DCount("*","売上テーブル","ShopCode='" & [ShopCode] & "' and Count>" & [Count]))<3)) ORDER BY 売上テーブル.ShopCode, DCount("*","売上テーブル","ShopCode='" & [ShopCode] & "' and Count>" & [Count]); このSQLはデザインビューで表示可能です SQLビューに貼り付けてデザインビューで表示すれば 作り方が分かります

関連するQ&A

  • SQL SERVER 店舗毎のTOP10

    表題の件のSQLについてアドバイスお願いいたします。 DB:SQL SERVER 2008 R2 テーブル:売上伝票 カラム 店舗|伝票No|伝票日付|商品CD|商品名|数量|単価|金額(数量x単価) SELECT TOP 10 店舗NO, 商品CD, 商品名, SUM(数量) AS 販売数, SUM(金額)AS 販売金額 FROM 売上伝票 WHERE 伝票日付 BETWEEN [開始日] AND [終了日] GROUP BY 店舗NO,商品CD,商品名, ORDER BY 店舗NO,販売金額 DESC 当然ですが、上記のSQLでは、一番若い店舗NOのトップ10しか抽出できません。 店舗別、販売金額のトップ10を抽出するための、SQL文についてお教えください。

  • エクセルでのトップ10の出し方

    使えない方が入力したり、閲覧したりできる各店舗ごとの売上表を作成しています。 各店舗1sheetとし売上数だけを入力すればいいように保護もかけています。 店舗の売上として提出できるような形で作りたいとのことなので各店舗ごとのトップ10を出したいのですが上手く行きません。 そのまま印刷して提出書類とするのでフィルタをかけたり「RANK」をつけたりではなく、売上のデータ(表)から抽出(参照)して別の場所に表として抜き出したいのですがわかりません。 なんとか売上数のトップ10は出せたのですが数がダブった商品に関して上手く商品名が出ません。 私もエクセルを使いこなしているのではないので、後もうちょっとなのにそこだけ、煮詰まって考えすぎてきて、なんだかわからなくなってしまいました。 もしかしたら全然違う方法があるかもしれないので知ってる方がいらしましたら是非、教えてください。

  • 製品の最安店舗を取りたい。

    添付画像のようなテーブルがあります。 製品IDと販売店でユニークです。 製品毎に、最安の価格で売っている店を一覧として 出したいのですが、うまくいかず困っています。 表示としては TEST1 100 A店 TEST2 300 C店 というようにしたいのです。 また、もし最安の店舗が複数あれば、登録日が一番新しい店を 最安店舗としたいです。 製品IDでGroupByをして、価格のminで、製品毎の最安はとれるんですが、 最安の店舗が複数ある場合に困っています。 サブクエリで登録日でソートしてTOP1とかになるのでしょうか。 冗長で重いクエリになってしまい、実用に耐えず、困っています。 うまい取り方があったらご教授いただけないでしょうか。 よろしくお願いします。

  • 各店舗の売上金額をアクセスで出したい

    毎週出している売上の販売個数の表(例)です。 NO 店名 商品A 商品B 商品C 商品D・・・・・ 1 ア店 1 2 3 4 2 イ店 1 2 3 4 3 ウ店 1 2 3 4 ・    ・ ・    ・ 商品の数が約40種類あり、店舗の数が50店ほどあります。 上の表の個数のところを =(個数*単価)の値が出るように、 各店の売上の金額を出したいのですが、アクセスにインポートして 出す方法を教えていただけないでしょうか? tbl_売上(上の表をインポートしたもの) tbl_店舗 (店NO、店名) tbl_単価(商品NO、商品名、単価) のテーブルは作りました。 説明不足かもしれませんが、教えてください。

  • 月間集計ですべての日付を抽出するには

    Oracle9iで開発をしております。 月間集計をするにあたり、SQLをどのように書けばよいのか質問させていただきたいと思います。 たとえば、COUNTテーブルというテーブルがあり 年月日 カウント数 2005/09/01 1000 2005/09/01 1000 2005/09/02 2000 2005/09/03 3000 2005/09/05 5000 2005/09/06 6000 というようにデータが入っていたとします。 現在、 SELECT 年月日, SUM(カウント数) FROM COUNTテーブル WHERE COUNT_DATE BETWEEN TO_DATE(to_char(?||'/'||?||'/01')) AND LAST_DAY(TO_DATE(to_char(?||'/'||?||'/01'))) GROUP BY 年月日 としていまして、抽出されるデータは 2005/09/01 2000 2005/09/02 2000 2005/09/03 3000 2005/09/05 5000 2005/09/06 6000 となります。 ここで、2004/09/04や2005/09/07以降2005/09/30までのテーブルには存在 しない日付も抽出したいと思っています。 どのようにすれば抽出できるのでしょうか?

  • 人気記事(ランキング)表示に関するDB設計や方法

    DBのテーブル設計と実装について教えて頂けると嬉しいです。 登録制サイトで、記事を投稿して閲覧者がお気に入りに登録できるような仕組みを作っています。 トップページ等で「人気の記事」を表示する際、お気に入り登録数が多いものを表示させたいと思っています。 このような場合、どのようなテーブル設計や方法を取るのが良いのでしょうか? 3つ方法を思いつきますが、どれも一長一短なのかなという気がしています。 (テーブル設計の例)  「posts」テーブル  : post_id, user_id, text  「favorites」テーブル: favorites_id, user_id, post_id  「users」テーブル  : user_id, user_name (方法1)お気に入り登録数をテーブルに持たない(都度カウント処理する) トップページ表示の都度、「favorites」各記事のお気に入り登録数をカウントして(post_id で group byしてcountする)、登録の多い記事を表示させます。シンプルな方法ですが、レコード数が多い場合の負荷を心配しています。 (方法2)お気に入り登録数をテーブルに持つ お気に入り登録数を「posts」テーブル内に保持させます。  「posts」テーブル  : post_id, user_id, text, favorite_count 閲覧者がお気に入り登録した場合は「favorites」テーブルへの追加を行うと供に「posts」テーブルの「favorite_count」を更新します。トップページ表示の際は「posts」テーブルの「favorites_count」を見に行って多いものを表示させるだけなので負荷の心配は減ります。しかし、冗長な?データをテーブルに持つのは何か嫌な気がしますし、またプログラム実装が少し困難になります。 (方法3)人気の記事テーブルを別に持つ バッチ処理を1日1回等走らせ、登録数の多い記事をサーチして「人気の記事」テーブルに格納します。トップページでは、この「人気の記事」テーブルを見に行って表示させるだけになりますので負荷が減ります。しかし、リアルタイムな情報を表示できないのが残念です。 環境は、MySQL5.1、PHP5.2.17 となります。 アドバイス等頂けましたら嬉しいです。

  • Accessにて検索結果の一覧表示と他フォームへのデータの反映

    Access2002にて、受注管理のシステムを開発しております。 ・顧客テーブル ・売り上げテーブル ・売り上げ明細テーブル という、本に出てくるような一般的な形(?)です。 売り上げ情報を売上テーブルに入力する際に、現在は顧客テーブルに 登録された顧客情報を、リストボックスから選択しているのですが 顧客数が増えてきたために、リストボックスから探すのが困難になってきました。 たとえば、顧客を入力する際にボタンを押すと、顧客検索画面のような ものを表示して、氏名・会社名・電話番号等、顧客テーブルに 登録されている全ての情報から検索し、 検索結果の中から、顧客を選択する。というようにする方法は あるのでしょうか? たとえば、「東京都」で検索すると、全ての東京都の顧客が 一覧で表示され、そこから選択する。という感じです。 顧客検索用のフォームを作成するところまではいいのですが、 検索結果を一覧にする部分と、検索結果を元の売上テーブルに 反映する方法が検討もつきません。 小職、VBA・SQLの基本的な知識は多少なりとも心得ております。 どなたかお知恵を拝借できますでしょうか。 よろしくお願い致します。

  • 日付毎の集計方法

    下記のようなテーブル構成で、過去一週間の毎日について、登録した人の数を知りたいです。 ■テーブル名 my_table システムに登録すると,IDが付与され,登録した日付が記録されます。 ---------------------------------------- id(intger) | reg_date(登録した日付,timestamp) ---------------------------------------- 以下のようなSQLを考えたのですが、timestampが「2005-12-01 00:00:00+09」という細かい日付になっているので、これでは「1日」毎の集計にはなりません。 この場合、どう表現すればよいでしょうか? SELECT sum(reg_date) from my_table where ('now' - reg_date < '7days') GROUP BY reg_date order by reg_date

  • 至急Accessでフォームで検索できるようにしたい

    Accessのフォームで店舗IDと日付(例:201501-201502まで)を入力して検索ボタンを押したら、A店B店C店の過去1年分の売上履歴を蓄積したテーブルから(仮:テーブル名:全店舗売上履歴)その月の売上履歴がサブフォームにエクセルのような形式(表形式)でレコードが出てきて 別の枠に集計金額を表示させるような「売上履歴検索ツール」を作りたいのですが、どうしてもうまく行きません。 サブフォームを作りましたが どうしてもエクセルのような表形式でみれるように作れません。 また、店舗IDと日付で検索させるには VBAみたいな命令文が必要でしょうか? 作り方をアドバイスいただけると助かります。 (1)サブフォームに履歴をレコードごとに表示させたい (2)店舗ID、日付で検索させたい (3)検索範囲での集計金額を表示させたい (4)月の売上履歴をテーブルに蓄積させたい この4つのやり方を探しています。 【フォーム】 店舗ID→検索入力 日付→年月の検索入力 サブフォームに 日付(年月) 店舗ID 店舗名 販売商品名 数量 金額 をレコードごとに表示 その他(枠:フレーム) 集計した金額を表示 手順的な形で教えていただけると分かり良いです。 よろしくお願いいたします。

  • SEO対策:トップページ以外が登録されない

    SEO対策で質問です。 現在googleやYahoo!に自作サイトは登録されていますが、トップページしか登録されていません。 トップページ上からいくつか別ページがありもちろんリンクを張っています。 クローラーのアクセスログを見るとトップページだけを見て去っていってしまっているようです。 何が原因なのでしょうか。 フレームは使用していません。 テーブルを使用しその中に別ページへのリンクが張ってありますが、テーブルの入れ子にはしていません。1階層のみ。 よろしくお願いします。