MySQL用于分组一列并从另一列获取子组

时间:2013-01-30 21:07:38

标签: mysql sql

我有一个MySQL表。我把架构to this fiddle 在我的表中,当用户登录时,我将他/她记录到mytable。在同一天,同一个用户可以多次登录。所以我需要知道用户每天登录的次数。

我需要这样的输出:

  • 2013年1月30日
    - 迈克尔 - 2次
    - 约翰 - 4次

  • 2013年1月29日
    - 迈克尔 - 1次
    - 约翰 - 1次
    - 玛丽 - 1次
    - 迪恩 - 一次

  • 2013年1月28日
    - 迈克尔 - 3次
    - 玛丽 - 1次

我试过了:

SELECT COUNT(*) AS "times", username, date
FROM mytable GROUP BY date ORDER BY date DESC

但它给了我这个:
- 2013-01-30 - 迈克尔 - 6次
- 2013-01-29 - 约翰 - 4次
- 2013-01-28 - 迈克尔 - 6次

您能为此推荐一个查询吗?

3 个答案:

答案 0 :(得分:7)

只需在GROUP BY子句中添加用户名。

SELECT COUNT(*) AS "times", username, date
FROM mytable 
GROUP BY date, username ORDER BY date DESC

http://sqlfiddle.com/#!2/b5701/11

答案 1 :(得分:2)

选择日期,用户名,COUNT(1)AS“次” FROM mytable GROUP BY日期,用户名ORDER BY日期DESC

答案 2 :(得分:1)

你也应该Group by username

试试这个

   SELECT COUNT(*) AS times, username, date
  FROM mytable group by date,username ORDER BY date DESC

SQL FIDDLE DEMO