興味深い問題に遭遇しました。私は労働者のIDと彼らの訪問日の表を持っています。ここにダンプがあります:
CREATE TABLE `pp` (
`id` int(11) DEFAULT '1',
`day` int(11) DEFAULT '1',
`key` varchar(45) NOT NULL,
PRIMARY KEY (`key`)
)
INSERT INTO `pp` VALUES
(1,1,'1'),
(1,20,'2'),
(1,50,'3'),
(1,70,'4'),
(2,1,'5'),
(2,120,'6'),
(2,90,'7'),
(1,90,'8'),
(2,100,'9');
したがって、少なくとも 1 回は 50 日以上欠勤した労働者を見つける必要があります。たとえば、ワーカーが 5 日目、95 日目、96 日目、97 日目に訪問した場合、デルタを見ると、最大のデルタ (90) が 50 を超えていることがわかるため、このワーカーを結果に含める必要があります。問題は、異なるワーカーの訪問間のデルタを効率的に見つけるにはどうすればよいかということです。
結果として得られるデータの配列として mysql テーブルを操作する方法を想像することさえできません。
したがって、さまざまなワーカーの日の値を分離し、並べ替えてから、それぞれの最大デルタを見つける必要があります。しかし、どのように?たとえば、並べ替えられた配列を sql で列挙する方法はありますか?