我是sql的新手。请多多包涵。
我的Web主机上有一个MYSql数据库,我编写了一个php脚本来读取XML文件,并将xml中的数据存储到mysql表中。
当php脚本执行此操作时,它会使用名为Name
的字段为每个记录添加时间戳(它的类型设置为datetime)。此脚本设置为每秒读取和插入一次
由于处理时间,互联网拥塞等,它并不总是每秒记录。我想知道平均有多少秒,它错过了。
这是问题......
有没有办法在SQL代码中询问"在每分钟,平均秒数是多少?"或者我需要使用php或其他代码进行处理吗?
感谢
编辑:我想知道"在每一分钟,我成功地在84%的时间内以秒为单位记录这些信息。或者是什么百分比?" 这个百分比可以简单地通过SQL代码确定,还是需要从数据库中提取数据并由其他脚本(如PHP等)处理?
答案 0 :(得分:-1)
使用:
SELECT CONCAT(DATE(timestamp), ' ', HOUR(timestamp, ':', MINUTE(timestamp)) AS minute,
COUNT(*) AS count
FROM your_table_name
GROUP BY CONCAT(DATE(timestamp), ' ', HOUR(timestamp, ':', MINUTE(timestamp));
<强>解释强>
CONCAT(DATE(timestamp), ' ', HOUR(timestamp, ':', MINUTE(timestamp))
是一种让记录按分钟分组的奇特方式。您拥有的timestamp
字段包含DATE
(YYYY-MM-DD),HOUR
和MINUTE
(HH:MM)组件。这条线只是提取那些部分。 CONCAT
将它们粘合在一起形成一个字段。总体效果是截断字段的秒部分。
COUNT(*)
是一个聚合函数,用于计算组中的所有记录。如果你想把结束号码作为&#39;命中的百分比。在一分钟内,你可以使用;
COUNT(*) / 60 AS count
或
COUNT(*) / 60 * 100 AS count
这里的神奇之处是GROUP BY
,它告诉COUNT
处理与SELECT
相同的群组 - 将所有单个记录分组为1分钟的群组并允许他们被计算在内。