MySQL - 获取唯一键的每日计数

标签 mysql

我有一个 MySQL 数据库,用于存储门禁...我正在努力弄清楚如何获取每个 key 的每日实例计数...

示例数据:

 id  |       timestamp      |  key 
-----------------------------------
  0  |  2013-06-09 14:58:07 |  001
  1  |  2013-06-11 07:21:13 |  001
  2  |  2013-06-11 10:05:11 |  001
  3  |  2013-06-12 07:13:59 |  002
  4  |  2013-06-12 10:05:01 |  002
  5  |  2013-06-12 14:31:01 |  001
  6  |  2013-06-13 11:28:14 |  001
  7  |  2013-06-13 07:00:28 |  002
  8  |  2013-06-14 14:05:13 |  002
  9  |  2013-06-15 09:38:23 |  002

我希望最终得到的是:

key | 09 | 10 | 11 | 12 | 13 | 14 | 15 | ACCESSED DAYS |
---------------------------------------|---------------- 
001 |  1 |  0 |  2 |  1 |  1 |  1 |  1 |             6 |
002 |  0 |  0 |  0 |  2 |  1 |  0 |  0 |             2 |

感谢您的宝贵时间!

最佳答案

您可以使用条件聚合来做到这一点:

select `key`,
       sum(day(timestamp = 9)) as `09`,
       sum(day(timestamp = 10)) as `10`,
       sum(day(timestamp = 11)) as `11`,
       sum(day(timestamp = 12)) as `12`,
       sum(day(timestamp = 13)) as `13`,
       sum(day(timestamp = 14)) as `14`,
       sum(day(timestamp = 15)) as `15`,
       count(distinct date(timestamp)) as accessdays
from t
group by `key`;

要获取天数,只需计算不同的天数即可。

关于MySQL - 获取唯一键的每日计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18492544/

相关文章:

php - 使用 SSH 隧道连接到远程 mysql 服务器,使用 "localhost"

mysql - 基于 MySQL 中列的值交替行

php - Laravel Eloquent 仅选择不用作外键的数据

mysql - 全文搜索查询mysql

php - 如何从子查询中获取唯一计数?

php - 如何为所有列设置和条件 - php

c# - C# 上 mysql 语法的输入参数

MySQL 选择相同的列两次

php - 试图理解 mysqli,需要一个以一列作为键、一列作为值的数组

php - 如何使用 PHP 中的过程获取数据?