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

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回答

2517閲覧

sqlでcount関数するけど、データ自体は全件表示したい場合

退会済みユーザー

退会済みユーザー

総合スコア0

MySQL

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

SQL

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

0グッド

1クリップ

投稿2016/11/08 08:10

###前提・実現したいこと
クラスにいる人をカウントするのと、メンバーを表示したい。

###発生している問題・エラーメッセージ

人数ではカウントできているが、全てがまとまってしまっていて、クラスに誰がいるのかわからない。

count class name 5 桜 タカハシ

###該当のソースコード

id student class 1 タカハシ 桜 2 スズキ 桜 3 タナカ 桜 4 イシバシ 梅 5 ナカヤマ 梅

###期待する結果

count class name 3 桜 タカハシ スズキ タナカ 2 梅 イシバシ ナカヤマ

###試したこと

sql

1SELECT COUNT(name), class, name FROM (SELECT * FROM stu) as class

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

mysql 5.6
sequel pro
mac book

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

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

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

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

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

guest

回答3

0

ベストアンサー

普通やるなら以下のどちらかでしょうね
元データ

SQL

1create table tbl(id int,student varchar(30),class varchar(10)); 2insert into tbl values(1,'タカハシ','桜'),(2,'スズキ' ,'桜'),(3,'タナカ' ,'桜'),(4,'イシバシ','梅'),(5,'ナカヤマ','梅');

パターン1

SQL

1select class,(select count(*) from tbl as t2 where t2.class=t1.class) as count,student from tbl as t1;

パターン2

SQL

1select class,count(*) as count,group_concat(student) as student from tbl group by class;

投稿2016/11/08 09:43

yambejp

総合スコア114843

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

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

退会済みユーザー

退会済みユーザー

2016/11/08 10:02

そうですね。 パターン2使おうと思います。
guest

0

同じ様な表示になるSQLを作成してみました。

sql

1select case when t1.id=t2.id then t2.cn else ' ' end cnt, 2case when t1.id=t2.id then t1.class else ' ' end class, 3t1.student 4from tableA t1 LEFT JOIN 5(select class, min(id) id, count(*) cn from tableA group by 1) t2 6using(class) order by t1.id;

実行結果

rs

1cnt class student 23 桜 タカハシ 3 スズキ 4 タナカ 52 梅 イシバシ 6 ナカヤマ

投稿2016/11/08 09:43

A.Ichi

総合スコア4070

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

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

退会済みユーザー

退会済みユーザー

2016/11/08 10:01

ありがとうございます!できました!
guest

0

MySQLなどのRDBではできません。
必ずテーブル型となります。

DBを変えても良いのであれば、理想の形はMongoDBなどのNoSQLでできます。
またはプログラム側で連想配列にするか。

無理矢理な方法としては、
1カラム全てにcountを入れる方法があります。

何をするのかによって実装を変えたほうが良いと思います。

投稿2016/11/08 08:38

mukkun

総合スコア882

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問