
No.6ベストアンサー
- 回答日時:
SQLが間違っていたみたいですね。
(caseの終了"END"が抜けてました)select 項目,count(*) as 件数
from
(select
case when 価格 <= 10000 then '10000以下' when 価格 <= 20000 then '10001~20000'
else '20000以上' END as 項目 from テーブル)
group by 項目
集約すべき単位をCASEで作り込んで、それごとの件数を表示する考え方です。
たびたびアドバイスありがとうございました。
おかげさまで意図した結果を得る事ができ大変感謝しております。
最終的にクエリは以下のようになりました。
「DERIVEDTBL」の意味がまだ理解できてないのですが、
付けないと構文エラーになります。SQLServer2000の仕様でしょうか?
SELECT 項目, COUNT(*) AS 件数
FROM (SELECT CASE WHEN 価格 <= 10000 THEN '10000以下' WHEN 価格 <= 20000 THEN '10001~20000' ELSE '20000以上' END AS 項目 FROM veg)
DERIVEDTBL
GROUP BY 項目
No.5
- 回答日時:
>#3 & #4
・select (select~),(select ~)
フィールリス上のサブクエリは、テーブルスキャンが
個々に行われる可能性が高く、実行効率的に不利です。
この機能を使わないと実現できない場面以外では、
避けた方が良い考え方です。
・select ~ union select ~
当然ながら、これもテーブルスキャンが複数回行われる
可能があり、実行効率的に不利です。
個々に問い合わせる理由が無ければ、unionを使うのは
つまらないと思いますが..
なお、今回のケースで、価格に索引が付いていれば、
探査範囲が局所化され、重複して読み出す訳ではな
いので、結果として、許容可能なレベルの"遅さ"で
あるかも知れません。
逆に、価格に索引が無く、テーブルフルスキャンが
必要なケースで、大量のデータを扱う場合、極端に
遅いものとなります。
この回答への補足
チューニング的な説明を詳しく教えて頂きありがとうございます。非常に勉強になります。
クエリーを連結する方法以外で、
項目 件数
-------------------------------
10000以下 2
10000~20000 2
20000以上 0
のような結果を返すクエリを作成したいのですが、勉強不足で苦労しております。よろしければ、もう一度アドバイス頂けましたら幸いです。
No.4
- 回答日時:
#3です。
少し記述ミスがありました。以下が訂正内容です。
一行:
select (select COUNT(*) FROM 商品 WHERE 価格 <= 10000) AS CNT10000,
(select COUNT(*) FROM 商品 WHERE 価格 BETWEEN 10001 and 20000) AS CNT20000
複数行:
select '1万以下' AS NAME,COUNT(*) AS CNT FROM 商品 WHERE 価格 <= 10000
union
select '1万~2万' AS NAME,COUNT(*) AS CNT FROM 商品 WHERE 価格 BETWEEN 10001 and 20000
No.3
- 回答日時:
このような方法もあります。
一行:
select (select COUNT(*) 商品 TEST WHERE 価格 <= 10000) AS CNT10000,
(select COUNT(*) FROM 商品 WHERE 価格 BETWEEN 10001 and 20000) AS CNT20000
複数行:
select '1万以下' AS NAME,COUNT(*) AS CNT FROM TEST WHERE B <= 10000
union
select '1万~2万' AS NAME,COUNT(*) AS CNT FROM TEST WHERE B BETWEEN 10001 and 20000
No.2
- 回答日時:
一行に集約して結果を得るなら
select
sum(case when 価格 <= 10000 then 1 else 0 end) as 1万以下の件数,
sum(case when 価格 > 10001 and 価格 <= 20000 then 1 else 0 end) as 2万以下の件数
from テーブル
のように求められますし、複数行で返したいなら
select 集約キー,count(*) as 件数
from
(select
case when 価格 <= 10000 then '1万以下' when 価格 <= 20000 then '2万以下'
else 'その他' as 集約キー from テーブル)
group by 集約キー
のように求めても良いと思います。
この回答への補足
早々とアドバイスありがとうございます。
補足ですが、取得したい結果は、
項目 件数
-------------------------------
10000以下 2
10000~20000 2
20000以上 0
みたいな感じです。複数行で返す方法を試させて頂きましたが、「集約キー」の部分が理解できず動作させることができませんでした。お時間ございましたらもう一度アドバイス頂けましたら幸いです。

No.1
- 回答日時:
SELECT COUNT(*) AS 商品点数
FROM 商品テーブル
WHERE 価格 > 10000 AND 価格 < 20000
といった感じでいかかでしょう。
きちんと確認できる環境にないので、自信「なし」です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- 経営情報システム accessでの請求管理について 12 2022/06/11 16:20
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- 債券・証券 高度な質問だと思いますが、知性あふれる方にお願いします。教えてください。 現在メットライフア◯コで積 7 2023/08/06 10:12
- Visual Basic(VBA) EXCEL関数LOOKUPとFILTERについての質問です 1 2022/12/21 05:53
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- JavaScript テーブルの中のセレクトボックスの値が0のとき、非表示にしたい 3 2022/05/29 10:13
- Excel(エクセル) Excel 関数 vlookupなどの使い方について質問です。 シート1に品番、商品名、単価、発注条 6 2022/06/15 19:16
- 会計ソフト・業務用ソフト Excelで売上げデータの中の任意の商品の合計を出したい 3 2023/01/18 18:19
- Visual Basic(VBA) VBAコードで質問があります 2 2022/10/20 15:27
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLServerのストアドで戻り値取...
-
同一テーブル内のデータを比較...
-
2つのselect文をunion all で...
-
外部参照してるキーを主キーに...
-
差し込み後、元データを変更し...
-
SQLで特定の項目の重複のみを排...
-
フィルターかけた後、重複を除...
-
Outlook 送受信エラー
-
select文のwhere句に配列を入れ...
-
Access:クエリーにて集計後に...
-
SELECT 文 GROUP での1件目を...
-
エクセルの関数について教えて...
-
エクセルで最後の文字だけ置き...
-
VIEWの元のテーブルのindexって...
-
SQL Left Join で重複を排除す...
-
for whichの使い方
-
日本語のエイリアスは" "で囲...
-
カーソル0件の時にエラーを発生...
-
SQLサーバから、項目の属性(型...
-
Access パラメータクエリをcsv...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQL 複数のテーブルから重複な...
-
select *, `人口(男)`AND`人口(...
-
MAX値を条件にしたSQLで困って...
-
アクセス SQLで重複排除でcount...
-
漢字表示の電話機
-
SQLServerのストアドで戻り値取...
-
SQLのエディッションの確認方法...
-
2つのselect文をunion all で...
-
PCキーボード
-
Oracle:グループごとに最大日...
-
同一テーブル内のデータを比較...
-
Access2000でディレクトリリス...
-
DATEADD 関数の引数の省略形の...
-
SQLで小数点のついたべき乗を計...
-
order by区の記述位置
-
「ドロップダウンメニューフィ...
-
月間集計ですべての日付を抽出...
-
set lineで不要な改行が出力さ...
-
1つのカラムに複数レコードの...
-
SQL文 テーブル1つに複数のデータ
おすすめ情報