我遇到了一些麻煩編寫簡潔的代碼,以有效地產生期望的結果(在多萬條記錄DB)。的MySQL GROUP BY與排序
- 項將通過
time
- 項被分組將是選擇通過
provider
在於乙優先於A(和C在B) - 值必須選擇提供商的匹配值
表vs想要的結果:
// given this table
id | provider | time | value
---+----------+------------+-----------
1 | A | 2013-07-01 | 0.1
2 | A | 2013-07-02 | 0.2
3 | B | 2013-07-02 | 0.3
4 | A | 2013-07-03 | 0.4
// extrapolate this result
---+----------+------------+-----------
1 | A | 2013-07-01 | 0.1
3 | B | 2013-07-02 | 0.3
4 | A | 2013-07-03 | 0.4
個
的查詢,生成表並填充數據:
data_teste CREATE TABLE `data_teste` (`id` int(11) unsigned NOT NULL AUTO_INCREMENT,`provider` varchar(12) NOT NULL,`time` date NOT NULL,`value` double NOT NULL,PRIMARY KEY (`id`),UNIQUE KEY `index` (`provider`,`time`),KEY `provider` (`provider`),KEY `time` (`time`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO data_teste(`provider`, `time`, `value`) VALUES('A', '2013-07-01', 0.1),('A', '2013-07-02', 0.2),('B', '2013-07-02', 0.3),('A', '2013-07-03', 0.4);
這是窗的經典GROUP_BY /排序問題。
非常感謝。
我想你應該解釋爲什麼這是理想的結果。 –
@EvanMulawski有不同的供應商比帶來數據上的時間序列,但是當有重疊的時間字段我想從商B的數據優先於A(和etecetera) – Frankie