sql >> データベース >  >> RDS >> Mysql

合計に達するまで選択する方法

    最大単位を合計するときに、どのレコードが他のレコードよりも優先されるかを順序付ける方法が必要です。それ以外の場合、合計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値を持つレコードは、あちこちで「二重カウント」のようなものになる可能性があります。


    1. ORA-01653:表領域で表を拡張できませんORA-06512

    2. MySQL TEXT vs BLOB vs CLOB

    3. Postgres SELECTの列を連結するにはどうすればよいですか?

    4. python 3.5 --django 1.10 --mysqlclientwindows7インストールエラー