Как сгруппировать запрос в mysql по минимальному значению?

CREATE TABLE `cdr` (
`uniqueid` varchar(32) NOT NULL DEFAULT '',
`userfield` varchar(255) NOT NULL DEFAULT '',
`progressiveid` int(11) NOT NULL AUTO_INCREMENT,
`accountcode` varchar(20) NOT NULL DEFAULT '',
`src` varchar(80) NOT NULL DEFAULT '',
`dst` varchar(80) NOT NULL DEFAULT '',
`dcontext` varchar(80) NOT NULL DEFAULT '',
`clid` varchar(80) NOT NULL DEFAULT '',
`channel` varchar(80) NOT NULL DEFAULT '',
`dstchannel` varchar(80) NOT NULL DEFAULT '',
`lastapp` varchar(80) NOT NULL DEFAULT '',
`lastdata` varchar(80) NOT NULL DEFAULT '',
`calldate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`duration` int(11) NOT NULL DEFAULT '0',
`billsec` int(11) NOT NULL DEFAULT '0',
`disposition` varchar(45) NOT NULL DEFAULT '',
`amaflags` int(11) NOT NULL DEFAULT '0',
`callend` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`peeraccount` varchar(20) NOT NULL,
`linkedid` varchar(32) NOT NULL,
`sequence` int(11) NOT NULL DEFAULT '0',

) ENGINE=MyISAM AUTO_INCREMENT=139232 DEFAULT CHARSET=latin1;

Таблица содержит лог звонков из asterisk'a.

Как сделать группировку по linkedid, но так, чтобы получать минимальное значение sequence, соответствующее этим строкам?
  • Вопрос задан
  • 2933 просмотра
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
select * from `cdr` join (
SELECT `linkedid` as `minlinkedid`, MIN(`sequence`) as minseq
FROM `cdr`
GROUP BY `linkedid`) as minsequences on sequence=minseq and `linkedid`=`minlinkedid`


Желателен уникальный индекс по linkedid & sequence, чтобы не было потом сюрпризов.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
SELECT MIN(`sequence`)
FROM `cdr`
GROUP BY `linkedid`
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы