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

SQL 出現回数の保持

    最も簡単な (そしておそらく最も効率的な) アプローチは、 ROW_NUMBER() を使用することです :

    SELECT [Date], Code, [Count] = ROW_NUMBER() OVER (PARTITION BY Code ORDER BY [Date])
     FROM dbo.YourTableName
     ORDER BY [Date];
    

    おもしろいことに、SQL Server 2012 でもこの方法で解決できます。If Date ユニークです:

    SELECT [Date], Code, [Count] = COUNT(*) OVER (PARTITION BY Code ORDER BY [Date]
      RANGE UNBOUNDED PRECEDING)
     FROM dbo.YourTable
     ORDER BY [Date];
    

    またはもっと簡単に:

    SELECT [Date], Code, [Count] = COUNT(*) OVER (PARTITION BY Code ORDER BY [Date])
     FROM dbo.YourTable
     ORDER BY [Date];
    

    If Date は一意ではなく、同順位 (日付とコードの同一の組み合わせに対して同じ数) が必要ない場合は、より高価な ROWS を使用する必要があります 、オンディスク スプールを使用します:

    SELECT [Date], Code, [Count] = COUNT(*) OVER (PARTITION BY Code ORDER BY [Date]
      ROWS UNBOUNDED PRECEDING)
     FROM dbo.YourTable
     ORDER BY [Date];
    

    テーブルでこれらの各オプションを試して、パフォーマンスがどのようなものかを確認してください。



    1. PostgreSQL SHOW TABLES Equivalent(psql)

    2. 矢印表記

    3. WindowsにSQLServerをインストールする方法

    4. マルチテナントmysqlデータベースを設計する方法