0

別のフィールドの個別の値ごとに最大回数表示される値をテーブルから抽出しようとしています。たとえば、データセットが次の場合:

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 の値を示す "what" ごとに 1 つの行を取得する方法です。

解決策はありません:

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

ご指導よろしくお願いします!

ジョージ

4

1 に答える 1