sql >> Database teknologi >  >> RDS >> Mysql

Mysql betinget optælling

SELECT 
   l.product_id, t.asset_type_id, COUNT(*)
FROM
   lookup l
   CROSS JOIN
   (SELECT 1 AS asset_type_id UNION ALL SELECT 2 UNION ALL SELECT 3) t
   LEFT JOIN
   assets a ON l.asset_id = a.asset_id AND t.asset_type_id = a.asset_type_id
GROUP BY
   l.product_id, t.asset_type_id;

Rediger:som separate kolonner

SELECT 
   l.product_id, 
   COUNT(CASE WHEN a.asset_type_id = 1 THEN 1 END) AS asset_count_image,
   COUNT(CASE WHEN a.asset_type_id = 2 THEN 1 END) AS asset_count_video,
   COUNT(CASE WHEN a.asset_type_id = 3 THEN 1 END) AS asset_count_sound
FROM
   lookup l
   LEFT JOIN
   assets a1 ON l.asset_id = a.asset_id AND a.asset_type_id IN (1, 2, 3)
GROUP BY
   l.product_id;



  1. Oracle:hvordan får man procent af totalen ved en forespørgsel?

  2. Ændre tidszoneforskydningen på en datotidsforskydningsværdi i SQL Server (T-SQL)

  3. Tilslutning af PowerShell til Salesforce.com

  4. MELLEM operatør vs.>=OG <=:Er der en præstationsforskel?