mysql - mysql获取一周中每一天的统计信息

标签 mysql sql gaps-and-islands

我有一张这样的 table

Click ID   |    click_user_id | click_time (timestamp) 
-----------------------------------------------------
1          |      1           |       1518810765
-----------------------------------------------------
2          |      2           |       1518845445
-----------------------------------------------------
3          |      2           |       1518945445
-----------------------------------------------------

如何获得一周中每一天收到的点击次数(使用 mysql)。 结果应如下所示:

"mon":50
"tue":20
.
.
.
"sun":100

谢谢。

*编辑:

  • 1.如果当天没有记录则显示0
  • 2.不限于一周(显示有记录的每个星期一的结果)
  • 3.输出并不重要。天数也可以用数字表示。表格形式也可以。

最佳答案

click_time(时间戳) 转换为星期几。

MySQL 提供了一些有用的函数。 FROM_UNIXTIMEDATE_FORMAT

https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format

https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_from-unixtime

作为演示:

SELECT DATE_FORMAT(FROM_UNIXTIME( 1518945445 ),'%a') AS day_of_week

我们可以用列引用替换文字

SELECT DATE_FORMAT(FROM_UNIXTIME( t.click_time ) ,'%a') AS day_of_week
     , t.*
  FROM a_table_like_this t
 WHERE ...

要获取 day_of_week 的每个不同值的计数,我们将采用与通过 click_user_id 获取计数相同的方式来执行此操作

SELECT t.click_user_id 
     , SUM(1) AS cnt
  FROM a_table_like_this t   
 WHERE ...
 GROUP BY t.click_user_id

只需将出现的 t.click_user_id 替换为返回 day_of_week 的表达式。

要获得指定格式的结果,请考虑使用 LOWERCONCATENATE 函数进行外部查询。

为了对行进行排序,请考虑添加另一个表达式来返回星期几的升序值,例如DATE_FORMAT( ,'%w')

SELECT CONCATENATE('"',LOWER(v.day_of_week),'":',v.cnt) AS foo
  FROM ( 
         SELECT ...     AS day_of_week
              , ...     AS cnt 
              , ...     AS daynumber
           FROM a_table_like_this t
          GROUP BY ...
       ) v
 ORDER BY v.daynumber

关于mysql - mysql获取一周中每一天的统计信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48910066/

相关文章:

sql - 在 PostgreSQL 中通过值转换选择最小值

mysql - 如何在mysql中查找无间隙的序列号?

mysql - 如何使用 PHP 从 MySQL 时间戳获取日期

mysql - INSERT INTO 双选 - 怎么样?

mysql - 返回带有特定标签的行

sql - 非数字列中的SQL MAX函数

mysql - 将多列转置为行 - MySQL

mysql - 相同用户和相同状态的连续实例 - MYSQL

sql - 需要帮助找到正确的 T-SQL 查询

sql - 使用组和区间数据查找岛屿