SQL - 计算每个用户每天的登录次数

Wil*_*lBD 4 mysql date counting

我有一个生成如下表的查询:

Login_Date     Username
----------------------------------------------
1/1/10         user-1
1/1/10         user-1
1/1/10         user-2
1/2/10         user-1
1/2/10         user-2
1/3/10         user-1
1/3/10         user-1 
1/3/10         user-1
1/3/10         user-3
Run Code Online (Sandbox Code Playgroud)

查询如下所示:

SELECT Date_Used, Name AS licenseNames FROM B, A WHERE A.License_Key = B.License_Key  ORDER BY Date_Used ;
Run Code Online (Sandbox Code Playgroud)

这很好,但我需要它来生成日期列表,对于每个日期,它都会为我提供当天登录的用户列表,以及他们登录的次数。我已经查看了所有内容试图找到一个简洁的解决方案,但这只是死胡同。

我想要发布的结果如下所示:

Login_Date    Username    # of Times logged in
--------------------------------------------------
1/1/10       user-1       2
1/1/10       user-2       1
1/2/10       user-1       1
1/2/10       user-2       2
1/3/10       user-1       3
1/3/10       user-3       1
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激,这让我发疯。

编辑

以下是相应的表格,以避免混淆:

表 A 列:

--------------------------
ID   License_Key    Name
Run Code Online (Sandbox Code Playgroud)

表 B 列:

------------------------------
ID    Date_Used     License_Key
Run Code Online (Sandbox Code Playgroud)

编辑 2

根据评论请求,到目前为止,所有解决方案都在实际表上提供了相同的结果(尽管 SQL Fiddle 适用于所有表,所以..?)

我得到的结果如下:

Login_Date     UserName     Cnt (or NumLogins for the other solution)
---------------------------------------------------------------------
01-01-10       user-1        1
01-01-10       user-1        1
01-01-10       user-2        1
01-02-10       user-1        1
01-02-10       user-1        1
01-02-10       user-1        1
01-02-10       user-1        1
Run Code Online (Sandbox Code Playgroud)

等等等等。所以到目前为止,在所有答案中看起来都是按命令分组的只是做..什么都不做??非常混淆...

fth*_*lla 5

您必须使用带有 COUNT(*) 聚合函数的GROUP BY查询。由于 Date_Used 是一个 DATETIME 列,它可以包含 DATE 部分,也可以包含 TIME 部分,因此您必须使用DATE()函数仅提取 DATE 部分:

SELECT
  DATE(Date_Used),
  Name AS licenseNames,
  COUNT(*) AS logins
FROM
  B INNER JOIN A
  ON A.License_Key = B.License_Key
GROUP BY
  DATE(Date_Used),
  Name
ORDER BY
  DATE(Date_Used),
  Name
Run Code Online (Sandbox Code Playgroud)