🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
MySQL

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

SQL

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

Q&A

解決済

1回答

578閲覧

MYSQLでユニーク数で男女数を取り出したいです。

a-cha

総合スコア0

MySQL

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

SQL

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

0グッド

0クリップ

投稿2021/02/28 06:29

MYSQLでユニーク数で男女数を取り出したい。

下のテーブルがあったときに

iduser_idsexage
188888840
277777730
388888840
366666640

最終的には

sexcnt
2
1

としたいです。
重複しているuser_idを考慮した形としたく、以下のように考えていたのですが、うまく文を作ることができません。

男女数はこの文で

SELECT `sex`, COUNT(*) as 'cnt' FROM `enquete` GROUP BY `sex`

下の文のように重複をまとめたいと検討しました。

SELECT COUNT(DISTINCT `user_id`) as `cnt` FROM `enquete`

ご回答よろしくお願いします。

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

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

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

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

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

Orlofsky

2021/02/28 06:40

質問に、user_id 666666 を対象外とする理由を追記しては?
m.ts10806

2021/02/28 06:46

>user_id 888888 の人が2件あり、それを1件として扱いたいです。 それを許す設計にそもそも問題がありそうに思うのですが、如何でしょうか。 同じアンケートに同じ人が複数回回答している状況と言うことですよね
etsuhisa

2021/02/28 06:52 編集

2つを合わせた SELECT `sex`, COUNT(DISTINCT `user_id`) as 'cnt' FROM `enquete` GROUP BY `sex` でできるように思うのですが、これではダメだったのでしょうか?
a-cha

2021/02/28 07:02

>それを許す設計にそもそも問題がありそうに思うのですが、如何でしょうか。 確かにその通りだと思います。回答スキップなど検討してみます。 >同じアンケートに同じ人が複数回回答している状況と言うことですよね はい。 >2つを合わせた SELECT `sex`, COUNT(DISTINCT `user_id`) as 'cnt' FROM `enquete` GROUP BY `sex`でできるように思うのですが、これではダメだったのでしょうか? この方法でできました。ありがとうございます。 データを同じuser_idで男女が異なると両方値がとりだされていたようです。
guest

回答1

0

自己解決

etsuhisa様の質問欄の回答
>2つを合わせた

SELECT `sex`, COUNT(DISTINCT `user_id`) as 'cnt' FROM `enquete` GROUP BY `sex`

でできるように思うのですが、これではダメだったのでしょうか?

この方法でできました。ありがとうございます。
データを同じuser_idで男女が異なる場合、両方値がカウントされ、両方値が計算されていたようです。

投稿2021/02/28 07:05

a-cha

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問