请参见下面的MySQL表。分组按多个列来获取月份的常用条目
-
-
-- Table structure for table `sample_table`
--
CREATE TABLE IF NOT EXISTS `sample_table` (
`id` bigint(11) NOT NULL AUTO_INCREMENT,
`station` varchar(300) NOT NULL,
`city` varchar(300) NOT NULL,
`reviewcount` int(6) NOT NULL,
`result_month` varchar(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
INSERT INTO `sample_table`(`id`, `station`, `reviewcount`, `result_month`) VALUES
(1, 'A','NewYork', 10, 'Jan'),
(2, 'B','NewYork', 12, 'Jan'),
(3, 'C','Florida', 14, 'Jan'),
(4, 'A','NewYork', 12, 'Feb'),
(5, 'B','NewYork', 14, 'Feb'),
(6, 'C','Florida', 20, 'Feb'),
(7, 'D','Washington', 12, 'Feb'),
(8, 'A','NewYork', 14, 'Mar'),
(9, 'B','NewYork', 14, 'Mar'),
(10, 'C','Florida', 28, 'Mar');
在这里,我需要克服一系列时期同一站的信息。
也就是说,如果我们选择范围从1月到3月,应该显示每个月结果行的站点。
这里只站A和C是在选定的范围,即从1至3月
每月检讨计数因此,我需要得到像
A - Jan - 10
C - Jan - 14
A - Feb - 12
C - Feb - 20
A - Mar - 14
C - Mar - 28
我试着GROUP BY结果站,result_month,也尝试过JOIN的表,但它没有帮助。
我正在处理一个有数千个工作站的巨大表格,我也需要查询进行优化。
第二部
我需要得到城市明智的汇总信息也 对输出应该是什么样子,
City -Station Count - Review Count
NewYork - 2 - 22 -Jan
Florida - 1 - 14 - Jan
NewYork - 2 - 26 -Jan
Florida - 1 - 10 - Jan
NewYork - 2 - 28 -Jan
Florida - 1 - 28 - Jan
任何帮助将是非常appreciated.Thanx提前。
在已提供有所述例子是无关组仅有1个WHERE子句站IN(“A”,“C”)。分组用于存在多行时使用相同数据的情况(可能有一些不同点,例如不同的reviewcounts) – Svetoslav
在这种情况下,站点数是以十万为单位的。在IN子句中放入十万个条目是否是一种很好的做法? – suneesh
那些真正的DDL?!?!?Suneesh南亚以外的任何人都不知道什么是十万分之一(尽管我接受这是相当多的人)! – Strawberry