2016-01-28 3 views
-2

В моем db у меня есть 2 таблицы: пользователи и учетные записи. Каждый пользователь приносит несколько учетных записей. (Пользователи имеют UserID и счета имеют UserID, AccountID и createTime)mysql получить таблицы с меняющимся числом столбцов

мне нужно получить запрос SQL, который показывает статистику о моих пользователях: таблица, в которой каждый строки сколько счета были созданы на каждом месяц, и столбцы - это имя пользователя.

Могу ли я это сделать?

+0

Что вы пробовали? Из того, что вы написали, таблица 'users' не обязательно должна быть частью запроса, потому что она просто содержит идентификатор. –

+1

@TimBiegeleisen, Comeon ... Он хочет, чтобы мы сделали для него работу. Разве вы не видели, что он сказал * Мне нужно получить SQL-запрос, который показывает * :) – Rahul

+0

Я даже не знаю, с чего начать ... @TimBiegeleisen. Я не знаю, как сделать запрос с меняющимся числом столбцов. – Joe3322

ответ

2

Нечто подобное должно работать для вас:

SELECT UserId, DATE_FORMAT(CreatedTime, '%Y-%m'), COUNT(*) AS numAccountsPerUserPerMonth 
FROM accounts 
WHERE YEAR(createTime) = 2016 
GROUP BY UserId, DATE_FORMAT(CreatedTime, '%Y-%m') 
ORDER BY DATE_FORMAT(CreatedTime, '%Y-%m') DESC, UserId 
+0

Как насчет того же месяца в разном году? – hvnis

+2

DATE_FORMAT (CreatedTime, '% Y-% m') @hvnis – Joe3322

+0

Я понимаю это решение. Он действительно решает это, но на самом деле это не то, о чем я просил. Я спросил, могу ли я сделать запрос, что его столбцы являются идентификатором пользователя, а строки - месяц, а в каждой ячейке есть количество учетных записей, которые были открыты, я на самом деле написал что-то как в комментариях выше ... Но спасибо за ваше решение. – Joe3322

2

Это должно делать то, что вы хотите:

SELECT UserId, YEAR(createTime) as YEAR, MONTH(createTime) as MONTH, COUNT(*) AS accCounter 
FROM accounts 
GROUP BY UserId, YEAR(createTime), MONTH(createTime) 

Это даст вам счет за сколько счетов каждый пользователь открыл в месяц ,

Смежные вопросы