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

Oracle-SELECT DENSE_RANK OVER(ORDER BY、SUM、OVER、およびPARTITION BY)

    何度も試しても、 DENSE_RANK()内の順序を修正できるかどうかはまだわかりません。 のOVER しかし、私は2つの間の解決策を見つけました。

    SELECT lot, def, qtd
    FROM (
      SELECT DENSE_RANK() OVER (ORDER BY qtd_lot DESC) rnk, lot, def, qtd
      FROM (
        SELECT tbl2.lot lot, tbl1.def def, Sum(tbl1.qtd) qtd, Sum(Sum(tbl1.qtd)) OVER (PARTITION BY tbl2.lot) qtd_lot
        FROM db.tbl1 tbl1, db.tbl2 tbl2
        WHERE tbl2.key = tbl1.key
        GROUP BY tbl2.lot, tbl1.def
      )
    )
    WHERE rnk <= 10
    ORDER BY rnk, qtd DESC, lot, def
    

    私が試したソリューションほど良くはありませんが、以前の作業コードよりは優れています。 Sum(Sum(tbl1.qtd))OVER(PARTITION BY tbl2.lot)> DENSE_RANK()から 次に、 qtd_lotという名前で追加します 。




    1. PythonMySQLモジュール

    2. MYSQL行を選択しますが、行を列に、列を行に選択します

    3. Python:_mysqlとMySQLdbの長所と短所は?

    4. 2つのociクライアントから1つのOracleセッションを維持できますか?