私の質問は非常に簡単です。各クライアントからのイベントをカウントし、それらをコンマ区切りの単一行に表示したいだけです。
私はこのテーブルを持っています:
_+----+----------------+
| id | event |
+----+----------------+
| 22 | a |
| 23 | bb |
| 24 | bb |
| 25 | ccc |
| 26 | ccc |
| 27 | ccc |
+----+----------------+
6 rows in set (0.01 sec)
_
これまでのところ、次のクエリがあります。
_SELECT COUNT(event) AS total FROM test_table GROUP BY event;
_
これは私に次の結果を与えます:
_+--------------+
| count(event) |
+--------------+
| 1 |
| 2 |
| 3 |
+--------------+
_
次のように、GROUP_CONCAT()
を使用して1行で表示しようとしていますが、さまざまな方法をすべて試しましたが、目的の結果が得られませんでした。
_+--------------+
| result |
+--------------+
| 1, 2, 3 |
+--------------+
_
それを行う方法についての手がかりはありますか?
前もって感謝します!
必要な結果を作成するために、サブクエリを使用し、そこからGROUP_CONCAT()
を使用しました。
create table test
(
id int,
event varchar(3)
);
insert into test
values
(22,'a'),(23,'bb'),(24,'bb'),(25,'ccc'),(26,'ccc'),(27,'ccc')
select group_concat(total)
from
(
SELECT COUNT(event) AS total FROM test GROUP BY event
)a
+---------------------+
|group_concat(total) |
+---------------------+
|1,2,3 |
+---------------------+
次のようにして、イベントごとにグループ化できます。
select event,
group_concat(id, ',') ids,
count(*) cnt
from events
group by event;
select event, group_concat(id, ',') ids, count(*) cnt from events group by event
イベント| ID | cnt :- :---------- | -: a | 22、| 1 bb | 23、24、| 2 ccc | 25、26、27、| 3
db <> fiddle ---(ここ