sql >> Database >  >> RDS >> Mysql

Meerdere tellingen en een groep op

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

als u een onbekend aantal page heeft , kunt u ook 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. Variabele doorgeven aan GoLang Query

  2. Fout in MySQL bij het instellen van de standaardwaarde voor DATE of DATETIME

  3. mysql_fetch_array() retourneert 'meegeleverd argument is geen geldige MySQL-resultaatbron'

  4. Hoe installeer ik SQLcl op Windows?