• ベストアンサー

同一テーブル内のデータを比較条件で集計し表示するには?

Azzuriの回答

  • Azzuri
  • ベストアンサー率68% (34/50)
回答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

badass
質問者

補足

ありがとうございます。 クエリーを連結する方法以外でできれば探したいのですが、よろしければ、またアドバイスください。

関連するQ&A

  • 同一テーブル内での比較(2つの条件での比較)

    大変申し訳ありません。ほかにも似たようなのがあるのですが、応用が利かずわかりませんので、ご教授頂けると幸いです。 以下のようなテーブルがあり、価格が異なるところを差額一覧を出したいと思っております。 【テーブル構成】 商品ID、商店ID、価格(円) というテーブルがあり、 商品A、商店1、1000 商品A、商店2、1500 商品A、商店3、800 商品B、商店1、2000 商品B、商店2、1700 商品B、商店3、2600 ・・・(多くの商品データがあります) というデータが格納されております。 商店1を基準に、商品毎に商店2、3の価格差を大きい順にソートして出したいと考えています。 SQL分ではどのように記載すれば良いでしょうか? (今回の場合の希望出力が以下のような感じです。) 価格差、商品名、商店 (←これは当然、出力されない) 600、商品B、商店3 500、商品A、商店2 -200、商品A、商店3 -300、商品B、商店2 ご教授頂けると幸いです。

    • ベストアンサー
    • MySQL
  • テーブルデータの絞込み条件

    MySQL4.1、PHP Version 4.3.9を使用しています。 下記のような2つのテーブルA,Bから テーブルAに存在するキー(no)のデータのみ取得したいのですが、 どのようにWHERE文を書いたら一回のSQL文で取得出来るのでしょうか。 テーブルA no |name 1 |たろう 2 |はなこ 3 |じろう テーブルB no |old 1 |16 3 |18 取得したい結果テーブル no |name 2 |はなこ 良い方法が見つかりません。 宜しくお願いします。

  • 月ごとの集計について

    以下のようなテーブルで月毎の集計を1回のSQLで取得する方法はありますでしょうか。 ----------------------- 日付 |商品番号|価格 ----------------------- 2006/07/01|001 |\210 2006/07/02|012 |\350 2006/07/05|003 |\100 2006/06/01|014 |\120 2006/06/09|014 |\120 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • 同一テーブル内での比較(最新データによる比較)

    大変申し訳ありません。本日も質問させてもらったのですが、一部情報(履歴)が不足していて追加で質問させてください。 以下のようなテーブルがあり、価格が異なるところを差額一覧を出したいと思っております。 (先ほどは2名の方に回答頂き、すみませんベスト10の設定がわからず設定できなくて、すみませんでした。) 【テーブル構成】 商品ID、商店ID、価格(円)、履歴 というテーブルがあり、 商品A、商店1、1000、1 商品A、商店2、1500、1 商品A、商店3、800、1 商品A、商店1、2000、2 商品A、商店2、2500、5 商品A、商店3、1800、3 商品B、商店1、2000、1 商品B、商店2、1700、1 商品B、商店3、2600、1 商品B、商店1、2500、4 商品B、商店2、2000、6 商品B、商店3、2800、7 ・・・(多くの商品データがあります) というデータが格納されております。 商品と商店の区分ごとに履歴の最も大きいものを取り出し (←追加) 商店1を基準に、商品毎に商店2、3の価格差を大きい順にソートして出したいと考えています。 SQL分ではどのように記載すれば良いでしょうか? (実際に比較したデータは以下を抽出し)【履歴の古いのは無視】 商品A、商店1、2000、2 商品A、商店2、2500、5 商品A、商店3、1800、3 商品B、商店1、2500、4 商品B、商店2、2000、6 商品B、商店3、2800、7 ・・・(多くの商品データがあります) (今回の場合の希望出力が以下のような感じです。) 価格差、商品名、商店 (←綱目です。) 800、商品B、商店3 500、商品A、商店2 -200、商品A、商店3 -500、商品B、商店2 ご教授頂けると幸いです。 ちなみに、教えて頂いたSQLをもとに以下のようにやってみましたが、うまくいきませんでした。。。 全くよくわかっていません。少し解説を入れて頂けると幸いです。 ------------------------------------ SELECT a.価格 - b.価格 AS 価格差, a.商品ID AS 商品名, a.商店ID AS 商店 FROM 対象テーブル a INNER JOIN 対象テーブル b ON (a.商品ID = b.商品ID AND b.商店ID = '商店1') WHERE a.商店ID <> '商店1' AND a.履歴 = (SELECT MAX(a.履歴)) AND b.履歴 = (SELECT MAX(b.履歴)) 【←追加】 ORDER BY a.価格 - b.価格 DESC; ---------------------------------------- select t2.価格-t1.価格 as 価格差 ,t1.商品名 ,t1.商店 from テーブル1 as t1 left join ( select 価格,商品 from テーブル1 where 商店=商店1 ) as t2 on t1.商品 = t2.商品 where t1.商店<>商店1 AND a.履歴 = (SELECT MAX(a.履歴)) AND b.履歴 = (SELECT MAX(b.履歴)) 【←追加】 ORDER BY t2.価格 - t1.価格 DESC;

    • ベストアンサー
    • MySQL
  • テーブル間のデータ計算

    データベースの初心者です(初心者以下かも) 当方クエリーで置き換えや抽出くらいしか使用したことがありません Acces2000かSQL2000でのテーブル間の計算について質問があります 商品テーブル コード,商品名,定価 001, ジュース,126 002, お菓子 ,105 003, みかん ,84 004, りんご ,73 売価テーブル コード,区分,売価 001, 1, 70 001, 2, 0 002, 1, 60 002, 2, 0 003, 1, 50 003, 2, 0 004, 1, 40 004, 2, 0 上記のような2つのテーブルのデータで 商品テーブルの定価から0.85を掛けて小数点以下を切り上げた結果を 売価テーブルの同じコードの区分1の売価フィールドに上書きする場合どのような 方法になるのでしょうか? ■希望結果 売価テーブル コード,区分,売価 001, 1, 108 001, 2, 0 002, 1, 90 002, 2, 0 003, 1, 72 003, 2, 0 004, 1, 37 004, 2, 0 Acces2000のクエリーでどうやってやるのでしょうか? よろしくお願いします

  • 2つのテーブルのデータまとめて取得したい

    SQL Server2008を使用しているのですが、どうのようにデータを取得すれば良いか わからず困っております。 例えば、 名前は違うが全く同じテーブルが2つあるとします。 テーブルAには6レコード、テーブルBには3レコードのデータが存在するとします。 この時、単純に6レコード+3レコードの 9レコード分をひとつのテーブルとしてデータを 取得するにはどのようなSQL文を書けばよいでしょうか? SELECT * FROM テーブルA, テーブルBでは18レコードもデータを取得してしまい、且つ フィールド数も増加してしまいます。 宜しくお願いいたします。

  • VIEWでテーブルの集計結果を表示したいです

    いつもお世話になっています。 下のテーブルデータから下記VIEW結果を表示する場合、 どのようなSQL文で出力が可能になるのでしょうか。 ※GROUP BY利用では集計値でない商品名、得意先名を出力できず困っています。 初心者的な質問で申し訳ありませんが、ご回答よろしくお願いします。 ○環境:Windows Server 2003、 SQLServer 2005 ------------------------------------------- 「売上明細テーブル」 商品CD 商品名 得意先CD 得意先名 価格 1 商品1 1001 得意先1 100 1 商品1 1001 得意先1 100 1 商品1 2002 得意先2 100 2 商品2 2002 得意先2 200 2 商品2 3003 得意先3 200 2 商品2 3003 得意先3 200 ------------------------------------------- 「VIEW結果」※価格は商品CD+得意先CDキーの合計値です。 商品CD 商品名 得意先CD 得意先名 価格(合計) 1 商品1 1001 得意先1 200 1 商品1 2002 得意先2 100 2 商品2 2002 得意先2 200 2 商品2 3003 得意先3 400

  • Excelワークシート上にSQL文を書き込み取得したデータをワークシート上に取得

    はじめましてこんにちわ。 現在ExcelとSQLServerでADOを使ってデータを取得したいと思っています。 SQL文をワークシート上に書いてそれを読み込んでSQL文を実行するようにしたいのですが、それを取得したあと、データをExcelワークシートに表示させる方法が思いつきません。 SQL文で指定するデータは任意の文です。そのため取得されたフィールドがいくつできるかわからない状態です。 例えば、SQL文であったら SELECT 商品ID,商品名,価格 from 商品テーブル なりますが、商品ID,商品名,価格フィールドを自動的に Excelフォーム上に作りたいということです。 ・基本的にSELECT文しか使わない ・SQL文は任意のSQL文である の条件がありますがそれはできるのでしょうか? よろしくお願いします。

  • 1つのテーブルからのデータ取得

    お世話になります。 Table1にはA,Bのフィールドがあり 例えば A=01のレコードを取得(取得するフィールドはA,B) このレコードを(1)とする。 Table1のうち、Aが(1)のBと一致する レコードを(2)とする。 Table1のうち、Aが(2)のBと一致する レコードを(3)とする。 N番目のBと一致するTable1のAがなくなるまで 上記を繰り返す。 (1),(2),(3)・・・の A,Bの値を取得するためには どういうSQL文を書けばいいでしょうか? 例:ここでA=01を設定する テーブル例と結果 Table1 A: B 01:02 取得 02:04 取得 02:05 取得 03:04 X 04:06 取得 05:10 取得 07:11 X 10:15 取得 以上お教えください。よろしくお願いします。

  • テーブルを結合して新規にテーブルに・・・

    アクセス2003でSQLを組んでデータベースを作っています。 まず、ユニオンクエリを使ってAクエリとBクエリを結合しました。 この結合したものを新規にテーブルを作成したいのですが、どうすれば良いでしょうか? 手順を教えて頂ければ幸いです。 よろしくお願いします。