SQLで上位xx%の取得方法
- このフォーラムに新しいトピックを立てることはできません
- このフォーラムではゲスト投稿が禁止されています
Ace_Nagashim
投稿数: 105
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
MagicV10 + SQL Server Express2012の環境です。
検索条件を指定して顧客の一覧を表示するプログラムを作成しています。
検索条件の例としては(実際には60項目ほど有ります)
(1)顧客名の一部を指定(空白なら総て)
(2)顧客フリガナの一部を指定(空白なら総て)
(3)住所の一部を指定(空白なら総て)
(4)登録年月日の範囲を指定
(5)最終売上日の範囲を指定
(6)商品を指定した場合、指定した商品を売上げたことがある顧客
(7)累計売上金額の範囲
(8)表示順をコード順・フリガナ順・登録年月日順・累計売上順で選択
(9)表示順が累計売上順の場合、上位xx%を指定
検索条件の内、(1)〜(8)はできたのですが(9)の上位xx%の
選択方法が解りません。
どなたかご教示をお願いします。
検索条件を指定して顧客の一覧を表示するプログラムを作成しています。
検索条件の例としては(実際には60項目ほど有ります)
(1)顧客名の一部を指定(空白なら総て)
(2)顧客フリガナの一部を指定(空白なら総て)
(3)住所の一部を指定(空白なら総て)
(4)登録年月日の範囲を指定
(5)最終売上日の範囲を指定
(6)商品を指定した場合、指定した商品を売上げたことがある顧客
(7)累計売上金額の範囲
(8)表示順をコード順・フリガナ順・登録年月日順・累計売上順で選択
(9)表示順が累計売上順の場合、上位xx%を指定
検索条件の内、(1)〜(8)はできたのですが(9)の上位xx%の
選択方法が解りません。
どなたかご教示をお願いします。
投票数:0
平均点:0.00
Kurogane
投稿数: 50
![常連 常連](../../uploads/rank3dbf8e9e7d88d.gif)
Ace_Nagashimさん、こんにちは。
SQL文なら「select top xx percent 〜」と書けばよいですが、
MAGICのメインテーブル定義であれば、あらかじめ上位xx%以外の
条件でデータ抽出し件数を取得後、その件数のxx%のデータのみを
表示する、といった形でしょうか。
データ量が多いのなら、埋め込みSQL化すればシンプルになるかと
思います。
SQL文なら「select top xx percent 〜」と書けばよいですが、
MAGICのメインテーブル定義であれば、あらかじめ上位xx%以外の
条件でデータ抽出し件数を取得後、その件数のxx%のデータのみを
表示する、といった形でしょうか。
データ量が多いのなら、埋め込みSQL化すればシンプルになるかと
思います。
投票数:0
平均点:0.00
Ace_Nagashim
投稿数: 105
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
kuroganeさん ご教示ありがとうございます。
メインテーブルの件数は7,000件ほどですが、
この他に60,000件ほどの別ファイルでも
同じような検索を行う可能性がありますので
できればMagicSQLの中でできないかと思っていました。
埋め込みSQL化とは、メインファイルの代わりに
SQLコマンドを使うと理解していいのでしょうか。
よろしくお願いします。
メインテーブルの件数は7,000件ほどですが、
この他に60,000件ほどの別ファイルでも
同じような検索を行う可能性がありますので
できればMagicSQLの中でできないかと思っていました。
埋め込みSQL化とは、メインファイルの代わりに
SQLコマンドを使うと理解していいのでしょうか。
よろしくお願いします。
投票数:0
平均点:0.00
Kurogane
投稿数: 50
![常連 常連](../../uploads/rank3dbf8e9e7d88d.gif)
Ace_Nagashimさん、こんにちは。
埋め込みSQLについてはご認識の通りです。
SQL文を直接記載し、その結果セットをメインテーブルのように扱えます。
MAGIC側の変数をSQL文に埋め込んだり出来、動的なSQL文が実行可能です。
埋め込みSQLについてはご認識の通りです。
SQL文を直接記載し、その結果セットをメインテーブルのように扱えます。
MAGIC側の変数をSQL文に埋め込んだり出来、動的なSQL文が実行可能です。
投票数:0
平均点:0.00
Ace_Nagashim
投稿数: 105
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
kuroganeさん ありがとうございます。
テストプログラム作成してSQLコマンドで
やってみます。
ただ、SQLコマンドで抽出したビューは変更出来ないので
検索条件に合致するデータのみをテーブル形式でメンテする
用途には使えないですね。
MagicSQLがSQLコマンド並みに詳細に設定できればいいなと
思います。
テストプログラム作成してSQLコマンドで
やってみます。
ただ、SQLコマンドで抽出したビューは変更出来ないので
検索条件に合致するデータのみをテーブル形式でメンテする
用途には使えないですね。
MagicSQLがSQLコマンド並みに詳細に設定できればいいなと
思います。
投票数:0
平均点:0.00
Kurogane
投稿数: 50
![常連 常連](../../uploads/rank3dbf8e9e7d88d.gif)
オンラインタスクでダイレクトに反映、となるとビューに対しては無理ですね。
ただ、埋め込みSQLのビューは一時テーブルに格納する為、参照時は別テーブルです。
ビューの内容が未集計なら、同一テーブルにリンクを張ってその項目を用いれば、更新出来るかと思います。
ただ、埋め込みSQLのビューは一時テーブルに格納する為、参照時は別テーブルです。
ビューの内容が未集計なら、同一テーブルにリンクを張ってその項目を用いれば、更新出来るかと思います。
投票数:0
平均点:0.00
Ace_Nagashim
投稿数: 105
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
kuroganeさん ありがとうございます。
なるほど、そういう方法があるのですね。
頭が固くなっていました。
なるほど、そういう方法があるのですね。
頭が固くなっていました。
投票数:0
平均点:0.00