MySQL подсчет сгруппированных двух столбцов - PullRequest
1 голос
/ 13 марта 2019

У меня есть user_logs таблица:

user_id | operation | table
--------+-----------+-----------
1       | create    | restaurant
1       | create    | restaurant
1       | create    | dish type
1       | create    | dish type
1       | create    | dish type
1       | update    | dish name
1       | update    | dish name
1       | update    | dish name
1       | update    | restaurant
1       | update    | restaurant

Я хочу заполнить данные для этой таблицы:

operation_on_table | count
-------------------+------
create restaurant  | 2
create dish type   | 3
update dish name   | 3
update restaurant  | 2

То, что я сделал до сих пор:

SELECT operation, count(operation) FROM user_logs
WHERE user_id = 1
GROUP BY operation

Это дает мне следующее:

operation | count
----------+------
create    | 5
update    | 5

Но это не то, что мне нужно.

Как мне добавить имя таблицы в счетчик?

Ответы [ 4 ]

3 голосов
/ 13 марта 2019

добавить table столбец в группу по

SELECT operation,`table`, count(operation) 
FROM user_logs
WHERE user_id = 1
GROUP BY operation,`table`
2 голосов
/ 13 марта 2019

GROUP BY оба столбца и объединить столбцы внутри выберите:

SELECT CONCAT_WS(' ', `operation`, `table`) AS `operation_on_table`
     , COUNT(*) AS `count`
FROM `user_logs`
WHERE `user_id` = 1
GROUP BY `operation`, `table`
1 голос
/ 13 марта 2019

Вы можете попробовать

select operation,[table], count(operation) from  user_logs 
GROUP BY operation,[table]
1 голос
/ 13 марта 2019

Простой запрос сделает работу:

select operation, count(*) from (
   select concat(operation, ' ', `table`) `operation` from user_logs
) a group by operation
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...