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

SQL:すべての列の個別の値の数をカウントします

    これを試してください(SQL Server 2005の構文):

    DECLARE @YourTable table (col1  varchar(5)
                             ,col2  int
                             ,col3  datetime
                             ,col4  char(3)
                             )
    
    insert into @YourTable values ('abcdf',123,'1/1/2009','aaa')
    insert into @YourTable values ('aaaaa',456,'1/2/2009','bbb')
    insert into @YourTable values ('bbbbb',789,'1/3/2009','aaa')
    insert into @YourTable values ('ccccc',789,'1/4/2009','bbb')
    insert into @YourTable values ('aaaaa',789,'1/5/2009','aaa')
    insert into @YourTable values ('abcdf',789,'1/6/2009','aaa')
    
    
    ;with RankedYourTable AS
    (
    SELECT
        ROW_NUMBER() OVER(PARTITION by col1 order by col1) AS col1Rank
            ,ROW_NUMBER() OVER(PARTITION by col2 order by col2) AS col2Rank
            ,ROW_NUMBER() OVER(PARTITION by col3 order by col3) AS col3Rank
            ,ROW_NUMBER() OVER(PARTITION by col4 order by col4) AS col4Rank
        FROM @YourTable
    )
    SELECT
        SUM(CASE WHEN      col1Rank=1 THEN 1 ELSE 0 END) AS col1DistinctCount
            ,SUM(CASE WHEN col2Rank=1 THEN 1 ELSE 0 END) AS col2DistinctCount
            ,SUM(CASE WHEN col3Rank=1 THEN 1 ELSE 0 END) AS col3DistinctCount
            ,SUM(CASE WHEN col4Rank=1 THEN 1 ELSE 0 END) AS col4DistinctCount
        FROM RankedYourTable
    

    出力:

    col1DistinctCount col2DistinctCount col3DistinctCount col4DistinctCount
    ----------------- ----------------- ----------------- -----------------
    4                 3                 6                 2
    
    (1 row(s) affected)
    


    1. javascriptを使用してmysqlデータベースから2020-04-30ではなく30-04-2020のような日付を表示する

    2. jQueryを使用してMySQLクエリを実行するにはどうすればよいですか?

    3. ビット演算の代替

    4. Rails:Herokuへのデプロイ、多くの問題