「みんな教えて! 選手権!!」開催のお知らせ

いつもお世話になります。
アクセス初心者で、恐らく以前にも同じような質問があったと思うのですが、過去の回答を見てもどうしても分からなかったので教えていただけますでしょうか。

DBの1列目には"店舗名"2列目には"商品名"3列目には"売上数量"があります。1コも売れなかった場合は"0"か空白になっています。「店舗別に商品が何種類売れたか」をカウントしたいのです。
クエリで、"店舗名"をグループ化、"売上数量"をカウントすることまでは分かるのですが、「"0"と空白を除外してカウントする」方法が分かりません。

お手数をおかけしますが、手順を教えていただけますでしょうか。

A 回答 (8件)

No6 の手順について説明させていただきます。



まず、対象データのみを抽出するクエリを作ります。
売上数量の抽出条件に
Is Not Null And <> 0
(これは他の方も指摘されていますが Is Not Null And >0 でもOKです。)
と入れてください。 この時点でこのクエリを実行させ参照できる全てのデータの売上数量に1以上の数字が入っていることを確認してください。 このクエリを名前を付けて保存します。

その次に新しくクエリを作成し、参照元として最初に作ったクエリを指定します。 このクエリは集計クエリとして、店舗名でグループ化し、他のフィールドを一つだけ追加してカウントとします。 このフィールドは、売上数量とすると分かりやすいかもしれませんが、実際には何でもかまいません。 このクエリを実行させれば、店舗別に何種類売れているか分かると思います。

集計クエリを作る際の注意点として

(1)クエリのデザインビューでの抽出条件は、集計を行った後に該当データを抽出するものです。 (No3の回答がごめんなさいであった理由です。)
(2)フィールド数が多い場合はグループ化が必要以上に入ってしまうと、予期せぬ結果が出ることがありますので、そのあたりをしっかり確認すること。

などが考えられます。

もちろん他の方法でもできますが、分かりやすい方法として参考になれば幸いです。 クエリを2段階に分けることのメリットは、分かりやすいということと、場合によっては速度が速くなることが考えられます。 デメリットとしては、構造が単純でなくなることや、無駄な記述が発生することが考えられます。 将来的に別なデータベースに移行することを考える際はそのあたりも問題になりえます。
    • good
    • 0
この回答へのお礼

いつもお世話になり、ありがとうございます。
このご回答をいただいてから、すぐに試させていただきまして、問題解決できました。ありがとうございました。
他の方の回答も、試してから御礼を記入しようと思っていたのですが、急ぎの用が入っていて今まで御礼が書けませんでした。御礼が遅くなりまして大変申し訳ございません。

お礼日時:2006/01/27 15:03

>「クエリ」を選択→「デザインビューでクエリを作成する」→テーブルを選択→


>"店舗名"と"売上数量"をドラッグ&ドロップ→ツールバーの"Σ"を選択→集計で"店舗名"でグループ化
>"売上数量"でカウントを選択→売上数量の下の抽出条件のセルで"is not null and <> 0"と入力→実行
上記で出来るはずです。
売上数量のWHERE条件の抽出条件としてIs Not Null And >0かIs Not Null And <>0で空白と0は除かれます。
記述など間違えていないでしょうか。

店舗名はグループ化・商品名はカウント・売上数量はWHERE条件としてIs Not Null And >0かIs Not Null And <>0と記述。
これで出来ます。

>商品a・bが何万個売れていようと"2"種類売れているか
蛇足ですがこれは通常なら商品をカウントすると思いますが・・売上数量は抽出条件として空白か0以外を抽出するとして使用。構文としてはこれが正しいと思います。
    • good
    • 1
この回答へのお礼

いつもお世話になります。
ご丁寧にご説明いただいたおかげで、理解する能力が著しく低い私でも、理解できました。また、アクセスの使い方も大分理解が進みました。
ありがとうございました。

お礼日時:2006/01/13 09:12

NO2ですが、たびたびごめんなさい。

 

一旦0と空白を除外したクエリを元に集計クエリを作成するのが、一番簡単ですね。
    • good
    • 0

クエリの表示を「SQLビュー」にして、以下のSQL文をペーストして下さい。


(元のテーブル名は「商品別売上明細」と仮定してあるので、ペーストしてから質問者さんが実際に使っているテーブル名に直して下さい)

SELECT 商品別売上明細.店舗名, Count(商品別売上明細.商品名) AS 売れた商品の種類数
FROM 商品別売上明細
WHERE (((商品別売上明細.売上数量)>0))
GROUP BY 商品別売上明細.店舗名;
    • good
    • 0
この回答へのお礼

いつもお世話になり、ありがとうございました。
初心者のため、上記の内容をまだ試せておらず、理解できてから御礼を記入させていただこうと思っていたのですが、急ぎの業務が入っており、今の時点でまだ試せておらず、大変申し訳なく存じております。
ですが、後日に必ずマスターさせていただきます。
この度は、ありがとうございました。

お礼日時:2006/01/27 15:08

フィールド:Nz([売上数量])


   集計:Where 条件
 抽出条件:<>0

をクエリに追加です。
    • good
    • 0

NO2です。

 質問をちょっと読み間違えました。 

カウントと合計を間違えました。

売上数量の抽出条件をせっていすれば対象データのみカウントします。 

is not null and <> 0

でよいかと思います。

この回答への補足

早速のご回答ありがとうございます。
is not null and <> 0 を試してみたのですが、うまくいきませんでした。
オブジェクトで「クエリ」を選択→「デザインビューでクエリを作成する」→テーブルを選択→"店舗名"と"売上数量"をドラッグ&ドロップ→ツールバーの"Σ"を選択→集計で、"店舗名"でグループ化、"売上数量"でカウントを選択→売上数量の下の抽出条件のセルで、"is not null and <> 0"と入力
→実行

と行ったのですが、間違っていますでしょうか。また、No6でいただいたご回答なのですが、申し訳ないですが、私の知識では手順がわかりません。お手数をおかけしますが、手順を教えていただけませんでしょうか。

補足日時:2006/01/12 16:59
    • good
    • 0

0もnullも集計しても数に数えませんので、とくに考える必要はありません。

    • good
    • 0

「何種類売れたか」ですよね?



A店で商品aが150個
A店で商品bが200個
の場合に「売上数量」をカウントしちゃうと「350」になってしまいますが、本当に「売上数量」をカウントしても良いのですか?

この回答への補足

早速のご回答ありがとうございます。
まだあまりアクセスを勉強できていないのですが、「カウント」とは、行数を数えるものだと思っていたのですが、上記の例だと、商品a・bが何万個売れていようと、「"2"種類売れている」という答えが欲しいのです。
私の見当違いでしょうか?

補足日時:2006/01/12 16:20
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A