SQLite таблицы базы данных table1
user command date location
---------- ---------- ---------- ----------
user1 cmd1 2015-01-01 xxxdeyyy
user2 cmd1 2015-01-01 zzzfrxxx
user3 cmd1 2015-01-01 yyyukzzz
user1 cmd1 2015-01-01 xxxdezzz
...
Ожидаемый результат
Выход для where command='cmd1'
:Как мне группировать строки и столбцы в SQLite3?
month users_de users_fr users_es
-------- -------- -------- --------
01 1 0 5
02 2 0 0
03 0 2 1
04 5 0 15
05 1 0 4
06 11 1 2
07 9 0 3
08 1 0 5
09 0 0 5
10 0 0 0
11 1 0 0
12 1 4 5
Он группируется по месяцам (от колонки date
), а также сгруппированы по подстроке в месте (от столбец location
).
Фактический выход
я могу добиться этого (в месте):
month users_de
-------- --------
01 1
02 2
03 0
...
12 1
используя этот запрос:
select strftime('%m',date) as month, count(distinct user) as users_de
from table1
where command='cmd1' and location like '%de%'
group by strftime('%m',date);
Я тогда повторить этот запрос для других местах (where ... and location='fr'
):
month users_fr
-------- --------
01 0
02 0
03 2
...
12 4
и (where ... and location='es'
);
month users_es
-------- --------
01 5
02 0
03 1
...
12 5
Есть ли способ, чтобы иметь все users_xx
столбцов в одной таблице (в качестве выходных данных из SQLite, а не через какую-либо внешнюю (вниз по течению) обработки)?
Я думаю об этом неправильно (группировка вместо подзапросов в верхней части select
)?
Вы можете использовать корпус для каждого местоположения –