У меня есть следующая таблица:подзапросов с COUNT (MySQL)
id | user | createdAt | pstatus
-------------------------------------------------------
287 | Foo | 2013-08-01 17:19:24 | PLAYING
286 | Foo | 2013-08-01 17:18:24 | IDLE
285 | Foo | 2013-08-01 17:17:24 | PLAYING
284 | Foo | 2013-08-01 17:16:24 | BUFFERING
283 | Foo | 2013-08-01 17:15:24 | STOPPED
Как я могу запросить эту таблицу, чтобы произвести следующий результат? По сути, мне нужно получить общее количество разных значений pstatus на пользователя в день.
User | logdate | playCount | idleCount | bufferCount | StopCount
-------------------------------------------------------------------
Foo | 2013-08-01 | 48| 62 | 0 | 4
Foo | 2013-08-02 | 25| 22 | 0 | 0
Bar | 2013-08-02 | 22| 32 | 5 | 4
Bar | 2013-08-03 | 44| 11 | 1 | 0
Foo | 2013-08-03 | 32| 03 | 0 | 0
Я знаю, что могу использовать DATE (createdAt), чтобы получить дату в день вместо времени, но я борюсь с тем, как существенным слиянием следующей в одном запрос:
COUNT(pstatus) AS playCount WHERE pstatus = "PLAYING";
COUNT(pstatus) AS idleCount WHERE pstatus = "IDLE";
COUNT(pstatus) AS bufferCount WHERE pstatus = "BUFFERING";
COUNT(pstatus) AS StopCount WHERE pstatus = "STOPPED";
Я уверен, что это должен быть подзапрос, но он борется с синтаксисом!
pstatus находится на вторая таблица –
@JustinMitchell я не вижу вторую таблицу в вопросе OP –
Perfect - это было именно то, что я искал. FYI окончательный запрос выглядит 'ВЫБРАТЬ пользователя, ДАТА (createdAt) AS createdAtDate, SUM (pstatus = "ИГРАТЬ") AS прослушиваний , SUM (pstatus = "IDLE") AS idleCount , SUM (pstatus =" BUFFERING ") AS bufferCount , SUM (pstatus =" STOPPED ") AS StopCount FROM pings GROUP BY Пользователь, DAY (createdAt) ORDER BY Пользователь ASC, CreatedAtDate ASC' – Neokoenig