最大単位を合計するときに、どのレコードが他のレコードよりも優先されるかを順序付ける方法が必要です。それ以外の場合、合計600までのレコードのセットをどのように把握しますか?
SELECT d.id, d.size, d.date_created
FROM documents d
INNER JOIN documents d2 ON d2.tag_id=d.tag_id AND d2.date_created >= d.date_created
WHERE d.tag_id=26
GROUP BY d.id, d.size, d.date_created
HAVING sum(d2.size) <= 600
ORDER BY d.date_created DESC
これは開始するための基本的なクエリであり、まだ解決すべき問題がいくつかあります。
- 600未満で停止するため、ほとんどの場合、サイズ制限を正確に満たすことはできません。これは、もう1つのレコードを許可するように微調整することをお勧めします。たとえば、最初のレコードが600を超える場合、クエリは何も返さないため、問題が発生する可能性があります。
- 後でキャップの下に収まる可能性のある追加の小さなレコードをチェックすることは何もしません。
- 同じdate_created値を持つレコードは、あちこちで「二重カウント」のようなものになる可能性があります。