这是一个MySql问题。
我正在分析人们在一个区域中花费的时间。
原始数据如下:
visit_id person_id zone_id timeIn timeOut
1 1 1 10:58:10 11:03:07
2 1 1 11:03:59 11:04:10
3 2 1 10:52:10 10:53:59
4 2 1 10:57:03 10:57:22
5 2 1 10:57:55 10:58:27
6 2 2 11:04:33 11:05:17
(我在最后添加了 MySQL 数据定义)
输出是这样的条形图:对不起。刚刚发现我不能包含图像。这是一分钟一分钟的条形图,显示该区域的人数。重要的是,如果该区域内没有人在那一分钟内,它会显示一个零条目。如果没有这个要求,那么问题就简单多了。
条形图模块的输入需要如下所示(注意所需的零元素):
zone_id hourMinute count
1 10:52:00 1
1 10:53:00 1
1 10:54:00 0
1 10:55:00 0
1 10:56:00 0
1 10:57:00 1
1 10:58:00 2
1 10:59:00 1
1 11:00:00 1
1 11:01:00 1
1 11:02:00 1
1 11:03:00 1
1 11:04:00 1
2 10:52:00 0
2 10:53:00 0
2 10:54:00 0
2 10:55:00 0
2 10:56:00 0
2 10:57:00 0
2 10:58:00 0
2 10:59:00 0
2 11:00:00 0
2 11:01:00 0
2 11:02:00 0
2 11:03:00 0
2 11:04:00 1
2 11:05:00 1
此外,上面的原始数据适用于两个条形图(区域 1 和区域 2)。我只展示了 1 区的图表。
我可以通过在数据库和后端脚本之间来回传输数据来分多个阶段创建数据,但这很麻烦、难以支持且效率低下。
我怀疑必须可以在 mysql 中完成所有操作,但我没有足够的能力自己到达那里。
任何人都可以显示从输入到所需输出所需的 mysql 吗?
谢谢!
附录:
如果有助于理解问题,我在数据库和后端创建的中间结构如下:
过程一:爆发
visit_id person_id zone_id hourMinute
1 1 1 10:58:00
1 1 1 10:59:00
1 1 1 11:00:00
1 1 1 11:01:00
1 1 1 11:02:00
1 1 1 11:03:00
2 1 1 11:03:00
2 1 1 11:04:00
3 2 1 10:52:00
3 2 1 10:53:00
4 2 1 10:57:00
5 2 1 10:57:00
5 2 1 10:58:00
6 2 2 11:04:00
6 2 2 11:05:00
流程 02:按时分排序
visit_id person_id zone_id hourMinute
3 2 1 10:52:00
3 2 1 10:53:00
4 2 1 10:57:00
5 2 1 10:57:00
1 1 1 10:58:00
5 2 1 10:58:00
1 1 1 10:59:00
1 1 1 11:00:00
1 1 1 11:01:00
1 1 1 11:02:00
1 1 1 11:03:00
2 1 1 11:03:00
2 1 1 11:04:00
6 2 2 11:04:00
6 2 2 11:05:00
过程 03:计数
zone_id hourMinute count
1 10:52:00 1
1 10:53:00 1
1 10:57:00 1
1 10:58:00 2
1 10:59:00 1
1 11:00:00 1
1 11:01:00 1
1 11:02:00 1
1 11:03:00 1 person_id 1 visited twice in same minute
1 11:04:00 1
2 11:04:00 1
2 11:05:00 1
输入数据定义
CREATE DATABASE IF NOT EXISTS `test` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `test`;
-- MySQL dump 10.13 Distrib 5.6.11, for Win32 (x86)
--
-- Host: localhost Database: test
-- ------------------------------------------------------
-- Server version 5.6.14
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `tb_stackoverflowquestion01`
--
DROP TABLE IF EXISTS `tb_stackoverflowquestion01`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `tb_stackoverflowquestion01` (
`visit_id` int(11) NOT NULL AUTO_INCREMENT,
`person_id` int(11) DEFAULT NULL,
`zone_id` int(11) DEFAULT NULL,
`timeIn` datetime DEFAULT NULL,
`timeOut` datetime DEFAULT NULL,
PRIMARY KEY (`visit_id`)
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8 COMMENT='Question asked here:\nhttp://stackoverflow.com/questions/19723032/processing-source-data-to-produce-chartable-summary-with-mysql';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `tb_stackoverflowquestion01`
--
LOCK TABLES `tb_stackoverflowquestion01` WRITE;
/*!40000 ALTER TABLE `tb_stackoverflowquestion01` DISABLE KEYS */;
INSERT INTO `tb_stackoverflowquestion01` VALUES (16,1,1,'2013-01-01 10:58:10','2013-01-01 11:03:07'),(17,1,1,'2013-01-01 11:03:59','2013-01-01 11:04:10'),(18,2,1,'2013-01-01 10:52:10','2013-01-01 10:53:59'),(19,2,1,'2013-01-01 10:57:03','2013-01-01 10:57:22'),(20,2,1,'2013-01-01 10:57:55','2013-01-01 10:58:27'),(21,2,2,'2013-01-01 11:04:33','2013-01-01 11:05:17');
/*!40000 ALTER TABLE `tb_stackoverflowquestion01` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Dumping routines for database 'test'
--
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2013-11-01 8:36:33
从这一点开始,下一步是页面顶部显示的最终输出