我試圖從表中提取出現不同字段的每個不同值的最大次數的值。例如,如果數據集是:mysql哪個值有最大計數
a x
a x
a y
b x
b y
c x
c y
c y
查詢會產生
a x 2
b x 1
c y 2
我的實驗中使用以下命令:
CREATE TABLE IF NOT EXISTS `maxcount` (
`what` varchar(1) DEFAULT NULL,
`loc` varchar(1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
和
INSERT INTO `maxcount` (`what`, `loc`) VALUES
('a', 'x'),
('a', 'x'),
('a', 'y'),
('b', 'x'),
('b', 'y'),
('c', 'x'),
('c', 'y'),
('c', 'y');
第一部分很容易:
select what, loc, count(loc) howmany from maxcount group by what, loc;
我還沒有想出是如何利用它來獲取每一行對應一個「什麼」顯示,具有最大的最大數量和價值的LOC的值。
解決方案不是:
select what, loc, max(howmany) from (
select what, loc, count(loc) howmany from maxcount group by what, loc)
A group by what;
因爲它產生:
a x 2
b x 1
c x 2
你的指導欣然接受!
喬治
這確實提供了一個解決方案:'選擇什麼,祿,MAX(的howmany)從最( 選擇what,loc,count(loc)howmany from maxcount group by what,loc order by count(loc)desc) 一組由什麼組成;' – geoB 2012-04-12 20:42:43
您仍然在最外層的組中選擇'loc'也不在組合中,因此不保證能夠返回正確的結果。對於簡化的模式,它可能會正常工作,但您會遇到大桌子的問題。 – piotrm 2012-04-12 20:48:20
謝謝。我猜我的解決方案不適用於我的現實世界問題。 – geoB 2012-04-13 12:37:07