你好,我已代表其階段和歷史表顯示的時間文檔的文檔下面兩個表被轉移到下一個階段MySQL會以時間加入對最新記錄表
CREATE TABLE `document` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`description` text,
`stage` tinyint(4) NOT NULL DEFAULT '0',
`customer_name` varchar(100) DEFAULT NULL,
`creator_id` bigint(20) NOT NULL DEFAULT '0',
`customer_city` varchar(100) DEFAULT NULL,
`customer_state` varchar(100) DEFAULT NULL,
`customer_zip` varchar(50) DEFAULT NULL,
`customer_contact` varchar(100) DEFAULT NULL,
`number` varchar(100) DEFAULT NULL,
`latitude` float NOT NULL DEFAULT '0',
`longitude` float NOT NULL DEFAULT '0',
`creation_date` varchar(50) DEFAULT NULL,
`expanded_description` text,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `document_history` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`doc_id` bigint(20) NOT NULL,
`modifying_time` datetime DEFAULT NULL,
`changed_to_stage` tinyint(3) unsigned DEFAULT NULL,
`old_stage` tinyint(3) unsigned DEFAULT NULL,
`user_modified` bigint(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
我需要得到根據選定的時間段統計統計數據。例如,我需要知道在選定的時間段內有多少個文檔處於第1階段,但問題是,如果某個文檔在此期間處於幾個不同的階段 - 我只能計算最後一次階段,例如如果商務部在第一階段之後,在第2階段 - 我要指望它僅適用於階段2
這裏是我到現在爲止:
SELECT
round(sum(case when dh.modifying_time between '2016-09-15' and '2016-09-24' and dh.changed_to_stage = 1 then 1 else 0 end),0) entry_count,
round(sum(case when dh.modifying_time between '2016-09-15' and '2016-09-24' and dh.changed_to_stage = 3 then 1 else 0 end),0) pricing_count,
round(sum(case when dh.modifying_time between '2016-09-15' and '2016-09-24' and dh.changed_to_stage = 5 then 1 else 0 end),0) executed_count,
round(sum(case when dh.modifying_time between '2016-09-15' and '2016-09-24' and dh.changed_to_stage = 7 then 1 else 0 end),0) approved_count,
round(sum(case when dh.modifying_time between '2016-09-15' and '2016-09-24' and dh.changed_to_stage = 9 then 1 else 0 end),0) canceled_count
FROM document doc join document_history dh on doc.id=dh.doc_id
這裏的問題是,該文件是如果在那個時期處於兩個不同的階段,則計數兩次。
任何幫助將不勝感激。
感謝和問候
請添加樣本數據進行重現。同時告訴我們將歷史記錄放入歷史記錄表的規則。你是否也保留了歷史上的實際記錄? –
創建文檔時添加歷史記錄表中的記錄,同樣如果文檔從一個階段移動到另一個階段。 –