
mysql Client API version 3.23.49
PHP/4.4.5
で動作させようと思っています。
table
a b
1 2
3 4
2 4
7 1
2 6
1 6
上のデータから以下のような結果を得たいのですが
table
a b idcount1
1 6 2
3 4 1
2 6 2
7 1 1
グループで集計をとり、その上でbに6がある場合は6その他は
bの値にNULLもしくは別の値が入るという形でいいのですが・・・
できません。
SELECT a, b, count( * ) AS idcount1
FROM table
GROUP BY a
するとはじめに読みこんだ値がbには入ってしまいます。
結果
table
a b idcount1
1 2 2
3 4 1
2 4 2
7 1 1
SELECT a, b, count( * ) AS idcount1
FROM table
where b=6 GROUP BY a
するとbの値ははじきますし、カウントしている意味がなくなります。
結果
table
a b idcount1
1 6 1
2 6 1
GROUP BY 処理前のソートを考え、from table後に oder by b=6 asc を使ったがエラー
末尾に oder by b=6 asc を使うと最初に試した値をソートするだけでした。
宜しくお願いいたします。
No.2ベストアンサー
- 回答日時:
ややこしいので、tableじゃなくて、tと書きます。
SELECT a, MAX(IF(b=6,6,0)) as b1, count(*) as idcount1
FROM t GROUP BY a
でどうでしょう?
条件がよくわかりませんが、bは6が最大値なら、もっと簡単に
SELECT a, MAX(b) as b1, count(*) as idcount1
FROM t GROUP BY a
agricap 先日はお世話になりました。
前回の分に新たな命令文を組み込もうとして行き詰まったしだいです。
完璧ですね!
ひとつ疑問が。SQLポケットリファレンスを見ながらやっています。
私もsqlにphpやc言語のようなif分があれば簡単かつシンプルに解決できると思い調べたんですが、ifは
プロシージャ内で使用できる命令
oracle,sqlsever,db2,postgresqlでしか使えないと書いてありました。
なぜ!?
No.1
- 回答日時:
特定キーでgroup by した場合は、集計関数をつかわない別キーの値は
保障されません。(自信ないけどそんな感じだったはず)
3.23系ですよね?一度テンポラリにおとすといいのではないでしょうか?
テーブル名にtableという予約語をつかうとエラーになりますので
運用には注意が必要です。
CREATE TEMPORARY TABLE t2
SELECT DISTINCT a,b
FROM `table`
WHERE b=6;
SELECT t1.a,t2.b, count( * ) AS idcount1
FROM `table` as t1
LEFT JOIN t2 ON t1.a=t2.a
GROUP BY a
特定キーでgroup by した場合は、集計関数をつかわない別キーの値は
保障されません。
そうですね。調べたら出来そうになかったので質問したのですが、
yambejpの回答で解決しました。
ありがとうございます。
sqlはデータベースを動かす為だけなのでできる事がシンプルですね。
こみいった事をしようとすると命令文が複雑になってしまう・・・
慣れだとは思いますが、苦手だ!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- MySQL SQLです。下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「昨年の各月の総降 1 2023/07/01 00:32
- PostgreSQL SQLで検索結果の記事を表示したい 1 2022/04/28 21:03
- MySQL あっってますか?うまくいきません教えてくださいお願いします?? 2 2023/07/01 13:02
- PHP php my adminより取り出したデータ表示 2 2022/06/15 11:56
- PHP PHP MySql ページング 2 2022/09/20 06:38
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
count関数の値をwhere句で使用...
-
Select文を含むUpdateの記述方...
-
group by のソート
-
以下のテーブルa,bから目的とす...
-
SQLローダーCSV取込で、囲み文...
-
単一グループのグループ関数で...
-
テーブルの最後(最新)のレコー...
-
select文について
-
Oracleで「文字が無効です」の...
-
REGEXPで希望の動作をしてくれない
-
timestamp with time zone型の...
-
where句中のtrim関数について
-
レコードの登録順がおかしい
-
実人数と延べ人数
-
SQLの作り方についてご教授下さ...
-
AccessのSQL文で1件のみヒット...
-
SELECT FOR UPDATE で該当レコ...
-
ファイルの漢数字の順番につい...
-
select文の実行結果に空白行を...
-
トランザクションログを出力せ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
count関数の値をwhere句で使用...
-
OUTER JOIN とgroup by
-
結合したテーブルに名前をつけ...
-
NULLを 0 として計算する方法は?
-
同一カラム名でjoinしたところ...
-
紐づいた個数を取得したい
-
市区町村別の件数をカウントす...
-
小数点以下桁数が最大の値に小...
-
グループ化したあとソートしたい
-
count(*)
-
ストアドファンクションの再帰...
-
グループ内最大値に印を付けるS...
-
最大値の数をカウントしたい
-
重複レコードの抽出
-
金額の計算方法
-
SQL カラムの値ごとの集計
-
ORDER BYで並び替えなんですが…
-
VB データグリッドビューへの表示
-
Select文を含むUpdateの記述方...
-
複雑なSQLを一発で実行
おすすめ情報