python - MySQL - 按两列分组

标签 python mysql sql

我有一个看起来像这样的表

id, user_id   , type, date
3,  ivnWvOQqoN, iOS , 2015-11-24 15:46:09
4,  dskIbJhuSd, iOS , 2015-11-23 19:39:31
5,  dskIbJhuSd, iOS , 2015-11-24 23:37:45
6,  ----------, iOS , 2015-11-22 23:38:05
7,  ----------, iOS , 2015-11-23 23:38:10

现在我正在做这样的查询

SELECT COUNT(*) AS entries, user_id, DATE(created_at) as date, device_type
FROM App_Usage
WHERE device_type = 'iOS'
  AND created_at between 2015-11-22 AND 2015-11-25
GROUP BY DATE(created_at), user_id

这个返回结果,我希望它看起来像这样

((1L, '----------', datetime.date(2015, 11, 22), 'ios'),
(1L, 'dskIbJhuSd', datetime.date(2015, 11, 23), 'ios'),
(1L, '----------', datetime.date(2015, 11, 23), 'ios'),
(1L, 'dskIbJhuSd', datetime.date(2015, 11, 24), 'ios'),
(1L, 'ivnWvOQqoN', datetime.date(2015, 11, 24), 'ios')

上面代码的最后两行,成为下一段代码的最后一行。上面代码中的第二行成为下面代码中的第二行。

我的问题是我可以按日期分组吗?如果用户不是'------------',那么它会返回这样的结果

((1L, '----------', datetime.date(2015, 11, 22), 'ios'),
(1L, 'combo of users' datetime.date(2015, 11, 23), 'ios'),
(1L, '----------', datetime.date(2015, 11, 23), 'ios'),
(2L, 'combo of users', datetime.date(2015, 11, 24), 'ios'),

我在第一个结果中保留了 user_id,以表明只要用户是 '--------',我就希望将这些分组,将其他分组。

所以我想按日期分组,然后按用户不在 '---------' 的位置分组,我该怎么做,甚至可能吗?

期望的输出

输出:

number of uses, user_id**, type, date;
(1, '----------', 'ios', '2015-11-22 23:38:05'),
(1, 'some users or combo', 'ios', '2015-11-22 13:33:33'),
(2, 'some users or combo', 'ios', '2015-11-23 13:35:37'),
(1, '----------', 'ios', '2015-11-24 00:09:44'),
(2, 'some users or combo', 'ios', '2015-11-24 00:09:44'),

**所以我希望所有“--------”的用户 与“--------”分组,但任何不是“--------”的用户都可以 与所有其他用户合并。正如你在 24 日看到的那样, 将 2 种不同的用途放在一起,而用途是“--------” 是锯齿状的(这是上面的最后两行)

最佳答案

select count(*) as entries, dateCreate, device_type, user_id
from 
    (SELECT DATE(created_at) as dateCreate, device_type, case when user_id = '----------' then '-----------' else 'combo of users' as user_id  
    FROM App_Usage 
    WHERE device_type = 'iOS' 
    AND created_at between 2015-11-22 
    AND 2015-11-25) as temp_table 
GROUP BY dateCreate, user_id, device_type

注意:使用 dateCreate 而不是 date 因为它是关键字

关于python - MySQL - 按两列分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33910995/

相关文章:

MySQL:我可以在 centos 上使用命令 `cp` 创建数据库吗?

mysql - 在 CodeIgniter 中使用 order_by 和 group_by 无法按预期工作

SQL获取A列相同,B列不同的记录

sql - Rails 3 中继承的命名范围映射到错误的表

带有 paramiko 的 Python CGI

mysql - 我怎样才能做左连接但有两个子句

python - pop、del、remove在运行时的区别

MySQL 获取 View 转储

python - 如何从 Google Colab 中的脚本文件使用 pyplot 进行绘图?

python - 在 Mac OSX : No module named jinja2 上启动 iPython 时出错