2016-10-26 1 views
0

J'essaie de comprendre comment compter tous les présidents, directeurs, etc., puis convertir les colonnes en rangées dans une requête. Par exemple il y a un certain échantillon db « employé » ici: http://www.mysqltutorial.org/tryit/ je peux compter les employés de tous types en utilisant comme cette requête:MySQL convertir des colonnes en lignes

SELECT 
    SUM(CASE 
     WHEN jobTitle = 'President' THEN 1 
     ELSE 0 
    END) AS 'Presidents', 
    SUM(CASE 
     WHEN jobTitle LIKE 'VP%' THEN 1 
     ELSE 0 
    END) AS 'VPs', 
    SUM(CASE 
     WHEN jobTitle LIKE '%Manager%' THEN 1 
     ELSE 0 
    END) AS 'Managers', 
    SUM(CASE 
     WHEN jobTitle LIKE '%Rep' THEN 1 
     ELSE 0 
    END) AS 'Reps' 
FROM 
employees; 

Mais maintenant, je veux convertir des colonnes en lignes et je ne sais pas comment incluez-le dans une requête similaire à la réponse ici: Mysql Convert Column to row (Pivot table) Avez-vous une idée?

+0

Vous avez la méthode pour obtenir la sortie attendue. Où exactement êtes-vous resté coincé dans la mise en œuvre? En outre, vous devriez être un peu plus prudent dans la façon dont vous formulez vos questions parce que ce que vous avez demandé peut être répondu par un simple oui ou non. – Shadow

+0

En outre, je ne comprends pas pourquoi vous souhaitez dériver le résultat de la requête ci-dessus lorsque vous pouvez obtenir la sortie basée sur une ligne avec un simple groupe by et count. – Shadow

Répondre

0

Vous pouvez utiliser une sous-requête pour standardiser les titres des travaux, puis les grouper par et les ordonner avec une instruction case pour produire la sortie dans l'ordre décroissant de bossiness.

select jobtitle,count(*) from 
(
SELECT case 
     WHEN jobTitle = 'President' THEN 'Presidents' 
     WHEN jobTitle LIKE 'VP%' THEN 'VPs' 
     WHEN jobTitle LIKE '%Manager%' then 'Managers' 
     WHEN jobTitle LIKE '%Rep' then 'Reps' 
     end as Jobtitle 
FROM 
employees 
) s 

group by Jobtitle 
order by 
case when jobtitle = 'Presidents' then 1 
when jobtitle = 'VPs' then 2 
when jobtitle = 'Managers' then 3 
when jobtitle = 'Reps' then 4 
end