首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询按行分组,但保留最小日期

查询按行分组,但保留最小日期
EN

Stack Overflow用户
提问于 2017-01-20 11:38:25
回答 1查看 49关注 0票数 0

我有下一张有数据的表格:

代码语言:javascript
复制
user     group     dt_action
-----    -----     ---------
John     salvage   2016-3-2
Dennis   fire      2016-1-1
Martha   fire      2016-12-23
John     rescue    2016-1-20
John     salvage   2017-1-26
Developer NULL     2016-5-6
Dennis   several   2016-4-29
Martha   fire      2003-1-1

我的想法是按类别“组”分组,计算每个用户的累积量,但在datetime字段中,我希望保留每个组的最小日期。结果应该是这样的:

代码语言:javascript
复制
user      group   count_group     dt_action_min
----      -----   -----------    -------------
John      salvage     2           2016-3-2
John      rescue      1           2016-1-20
Dennis    fire        1           2016-1-1
Dennis    several     1           2016-4-29
Martha    fire        2           2003-1-1
Developer NULL        1           2016-5-6

这是一个很久以前的问题,偷走了我的梦想,但我能得到它!非常感谢,

丹尼

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-20 12:02:30

创建表/插入数据

代码语言:javascript
复制
CREATE TABLE DATA
    (`user` VARCHAR(9), `group` VARCHAR(7), `dt_action` VARCHAR(10))
;

INSERT INTO DATA
    (`user`, `group`, `dt_action`)
VALUES
    ('John', 'salvage', '2016-3-2'),
    ('Dennis', 'fire', '2016-1-1'),
    ('Martha', 'fire', '2016-12-23'),
    ('John', 'rescue', '2016-1-20'),
    ('John', 'salvage', '2017-1-26'),
    ('Developer', NULL, '2016-5-6'),
    ('Dennis', 'several', '2016-4-29'),
    ('Martha', 'fire', '2003-1-1')
;

查询

用自己的表名替换数据

代码语言:javascript
复制
SELECT
    `data`.`user`
  , `data`.`group`
  , `data_group`.`count_group`
  , `data_group`.`min_dt_action`
FROM
 `data` 
INNER JOIN (
  SELECT
     `data`.user
   , `data`.`group` 
   , COUNT(*) count_group
   , MIN(`data`.`dt_action`) min_dt_action
  FROM 
   `data`
  GROUP BY
     `data`.user
   , `data`.`group` 
) data_group
ON
 `data`.`user` = data_group.`user`
AND
  `data`.dt_action = data_group.min_dt_action
ORDER BY 
 `data_group`.`count_group` DESC

结果

代码语言:javascript
复制
user       group    count_group  min_dt_action  
---------  -------  -----------  ---------------
Martha     fire               2  2003-1-1       
John       salvage            2  2016-3-2       
John       rescue             1  2016-1-20      
Developer  (NULL)             1  2016-5-6       
Dennis     fire               1  2016-1-1       
Dennis     several            1  2016-4-29       
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41762793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档