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

複数のカウントとgroupby

    SELECT ID, Name,
            SUM(CASE WHEN `Page Visited` = 'Page A' THEN 1 ELSE 0 END) `Page A Visit`,
            SUM(CASE WHEN `Page Visited` = 'Page B' THEN 1 ELSE 0 END) `Page B Visit`,
            SUM(CASE WHEN `Page Visited` = 'Page C' THEN 1 ELSE 0 END) `Page C Visit`
    FROM tableName
    GROUP BY ID, Name
    

    pageの数が不明な場合 、PreparedStatementもできます

    SET @sql = NULL;
    SELECT
      GROUP_CONCAT(DISTINCT
        CONCAT(
          'SUM(CASE WHEN `Page Visited` =''',
          `Page Visited`,
          ''' then 1 ELSE 0 end) AS ',
          CONCAT('`',`Page Visited`, ' Visits`')
        )
      ) INTO @sql
    FROM TableName;
    
    SET @sql = CONCAT('SELECT ID, Name, ', @sql, ' 
                       FROM tableName
                       GROUP BY ID, Name');
    
    PREPARE stmt FROM @sql;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
    



    1. 2つの値/配列のMySQLIN()?

    2. Oracleの匿名TABLEまたはVARRAYタイプ

    3. MySQLの複数のテーブルにまたがる列を合計するにはどうすればよいですか?

    4. MySQL:JOINまたはUNIONなしで2つの異なるテーブルをマージします