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

個別のレコードをカウントするウィンドウ関数

    個別の値を数えるという問題の解決策を探して、この質問に出くわしました。答えを探しているときに、この投稿 に出くわしました .最後のコメントを参照してください。私はそれをテストし、SQLを使用しました。それは私にとって非常にうまく機能し、ここで別の解決策を提供することにしました.

    要約すると、 DENSE_RANK() を使用して 、 PARTITION BY 付き グループ化された列、および ORDER BY 両方 ASC および DESC カウントする列:

    DENSE_RANK() OVER (PARTITION BY drugClass ORDER BY drugName ASC) +
    DENSE_RANK() OVER (PARTITION BY drugClass ORDER BY drugName DESC) - 1 AS drugCountsInFamilies
      

    これを自分用のテンプレートとして使用します。

    DENSE_RANK() OVER (PARTITION BY PartitionByFields ORDER BY OrderByFields ASC ) +
    DENSE_RANK() OVER (PARTITION BY PartitionByFields ORDER BY OrderByFields DESC) - 1 AS DistinctCount
      

    これがお役に立てば幸いです!



    1. オラクルの整合性制約

    2. さまざまな表のデータを最初のデータ行の列名とともに動的に表示するPL/SQLプロシージャ/関数

    3. NHibernateOracle-DLLを読み込めません'OraOps10w.dll'

    4. Oracleにタイムスタンプを挿入する方法は?