MYSQL разделение двух разных значений в одном столбце на два столбца - PullRequest
0 голосов
/ 10 октября 2018

Таблица базы данных

Я пытаюсь сделать один запрос, в котором я разделяю два значения 'Y' и 'N' на два разных столбца на основе идентификатора и подсчитываюобщее количество раз, которое они появляются для каждого идентификатора.

SELECT exerciseId, count(frustrated) Frustrated from selfreportfrustration where frustrated = 'Y' group by exerciseId;

SELECT exerciseId, count(frustrated) NotFrustrated from selfreportfrustration where frustrated = 'N' group by exerciseId;

До сих пор мне удавалось сделать только один запрос для каждого значения, но я надеялся, что смогу сократить его до одного запроса для моей программы, чтобыработа.

Ответы [ 3 ]

0 голосов
/ 10 октября 2018

Вы можете использовать условное агрегирование:

select exerciseId, sum(frustrated = 'Y') as Frustrated,
       sum(frustrated = 'N') as NotFrustrated
from selfreportfrustration
group by exerciseId;
0 голосов
/ 10 октября 2018

Вы можете использовать агрегацию Count() с условной функцией If().

Попробуйте:

SELECT exerciseId, 
       COUNT( IF(frustrated = 'Y', exerciseId, NULL) ) AS frustrated, 
       COUNT( IF(frustrated = 'N', exerciseId, NULL) ) AS not_frustrated 
FROM selfreportfrustration 
GROUP BY exerciseId
0 голосов
/ 10 октября 2018

Мы поместим 'Y' или 'N' в другой столбец:

SELECT frustrated, exerciseId,
  count(frustrated) Frustrated
from selfreportfrustration
group by frustrated, exerciseId;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...