• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    MySQL实现按分秒统计数据量方式

    发布者: 天下网吧 | 发布时间: 2025-6-18 09:25| 查看数: 108| 评论数: 0|帖子模式

    在MySQL中,统计每秒、每分钟、每5分钟、每10分钟、每30分钟的交易量可以通过使用
    1. GROUP BY
    复制代码
    和 MySQL 的时间处理函数来实现。
    假设交易记录表名为
    1. transactions
    复制代码
    ,交易时间字段为
    1. transaction_time
    复制代码
    ,并统计每个时间段的交易量。

    1. 每秒交易量
    1. SELECT
    2.     DATE_FORMAT(transaction_time, '%Y-%m-%d %H:%i:%s') AS time_sec,
    3.     COUNT(*) AS transaction_count
    4. FROM transactions
    5. GROUP BY time_sec
    6. ORDER BY time_sec DESC;
    复制代码

      1. DATE_FORMAT
      复制代码
      (transaction_time, '%Y-%m-%d %H:%i:%s') 格式化时间到秒。
      1. COUNT(*)
      复制代码
      统计每秒的交易记录数。

    2. 每分钟交易量
    1. SELECT
    2.     DATE_FORMAT(transaction_time, '%Y-%m-%d %H:%i') AS time_min,
    3.     COUNT(*) AS transaction_count
    4. FROM transactions
    5. GROUP BY time_min
    6. ORDER BY time_min DESC;
    复制代码

      1. DATE_FORMAT
      复制代码
      (transaction_time, '%Y-%m-%d %H:%i') 格式化时间到分钟。

    3. 每5分钟交易量
    1. SELECT
    2.     CONCAT(DATE_FORMAT(transaction_time, '%Y-%m-%d %H:'),
    3.            LPAD(FLOOR(MINUTE(transaction_time) / 5) * 5, 2, '0')) AS time_5min,
    4.     COUNT(*) AS transaction_count
    5. FROM transactions
    6. GROUP BY time_5min
    7. ORDER BY time_5min DESC;
    复制代码

      1. FLOOR
      复制代码
      (MINUTE(transaction_time) / 5) * 5 将时间划分为5分钟的间隔。
      1. LPAD
      复制代码
      用于确保分钟数显示为两位数。

    4. 每10分钟交易量
    1. SELECT
    2.     CONCAT(DATE_FORMAT(transaction_time, '%Y-%m-%d %H:'),
    3.            LPAD(FLOOR(MINUTE(transaction_time) / 10) * 10, 2, '0')) AS time_10min,
    4.     COUNT(*) AS transaction_count
    5. FROM transactions
    6. GROUP BY time_10min
    7. ORDER BY time_10min DESC;
    复制代码

      1. FLOOR
      复制代码
      (MINUTE(transaction_time) / 10) * 10 将时间划分为10分钟的间隔。

    5. 每30分钟交易量
    1. SELECT
    2.     CONCAT(DATE_FORMAT(transaction_time, '%Y-%m-%d %H:'),
    3.            LPAD(FLOOR(MINUTE(transaction_time) / 30) * 30, 2, '0')) AS time_30min,
    4.     COUNT(*) AS transaction_count
    5. FROM transactions
    6. GROUP BY time_30min
    7. ORDER BY time_30min DESC;
    复制代码

      1. FLOOR
      复制代码
      (MINUTE(transaction_time) / 30) * 30 将时间划分为30分钟的间隔。

    结合 WHERE 过滤时间范围

    可以在查询中通过
    1. WHERE
    复制代码
    条件来限制统计的时间范围。
    例如,统计最近一天的每分钟交易量:
    1. SELECT
    2.     DATE_FORMAT(transaction_time, '%Y-%m-%d %H:%i') AS time_min,
    3.     COUNT(*) AS transaction_count
    4. FROM transactions
    5. WHERE transaction_time >= NOW() - INTERVAL 1 DAY
    6. GROUP BY time_min
    7. ORDER BY time_min DESC;
    复制代码
    这些查询分别统计了每秒、每分钟、每5分钟、每10分钟和每30分钟的交易量。
    如果需要扩展到其他时间段,只需调整
    1. FLOOR(MINUTE(transaction_time))
    复制代码
    中的时间间隔即可。

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

    来源:https://www.jb51.net/database/328959i5n.htm
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表