簡體   English   中英

MySQL - 按兩列分組

[英]MySQL - Group by two Columns

我有一張看起來像這樣的桌子

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 因為它是一個關鍵字

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM