質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

3回答

7743閲覧

それぞれの条件でCOUNTした結果を、列ごとに表示するSQL文について。

januarycom

総合スコア18

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2019/02/05 04:31

編集2019/02/05 04:32
SELECT COUNT(*) AS COUNT_1 FROM TABLE WHERE ID = 1;
SELECT COUNT(*) AS COUNT_2 FROM TABLE WHERE ID = 2;

上記の条件を1つのSQL文にまとめ、下記のような結果を得たいのですが、
なかなか思いつきません。知見のある方ご教示いただけないでしょうか。
やはり、2回クエリを発行するしかないのでしょうか。

COUNT_1COUNT_2
1020

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

sql

1select count( ID = 1 or null), count(ID = 2 or null) from `table`;

SQL】複数の条件のcountを1回のクエリでおこなう

投稿2019/02/05 04:45

papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/02/05 04:47

これは便利ですね。
januarycom

2019/02/05 04:51

かなりシンプルで勉強になりました。 ベストアンサーに採用いたしました。
guest

0

クロス集計ですね。

SQL

1select sum(case when ID=1 then 1 else 0 end) as COUNT_1 2 , sum(case when ID=2 then 1 else 0 end) as COUNT_2 3from `table`

真偽を集計する事で省略した書き方も可能ではあります。

SQL

1select sum((ID=1)) as COUNT_1 2 , sum((ID=2)) as COUNT_2 3from `table`

投稿2019/02/05 04:46

sazi

総合スコア25173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2019/02/05 05:03 編集

count()が要件なので、データが1件も無い時にNullが返却されるので、sum()では駄目ですね。
guest

0

多少強引かもしれませんが。

sql

1select (SELECT COUNT(*) FROM `TABLE` WHERE ID = 1) as COUNT_1 ,(SELECT COUNT(*) FROM `TABLE` WHERE ID = 1) as COUNT_2

※回答では修正しましたが、例示とはいえTABLEって予約語なのでそのまま提示しないほうがいいですよ

投稿2019/02/05 04:37

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

januarycom

2019/02/05 04:47

できました〜〜!ありがとうございます。 >> 回答では修正しましたが、例示とはいえTABLEって予約語なのでそのまま提示しないほうがいいですよ 気をつけますね!
m.ts10806

2019/02/05 04:49

私はあくまでそのまま書いただけで、他に効率のいい書き方が提示されているのでそちらを参考にしてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問