Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.26 KB | None | 0 0
  1. SELECT
  2. data_avaliacao,
  3. IFNULL( SUM( CASE WHEN a.avaliacao='Bom' THEN total END),0 ) AS `Bom`,
  4. IFNULL( SUM( CASE WHEN a.avaliacao='Muito Bom ' THEN total END),0 ) AS `Muito Bom `,
  5. IFNULL( SUM( CASE WHEN a.avaliacao='Excelente' THEN total END),0 ) AS `Excelente`
  6. FROM
  7. (
  8.  
  9. SELECT MONTH(s.data_avaliacao) data_avaliacao,
  10. CASE
  11. WHEN s.avaliacao = 1
  12. THEN 'Ruim'
  13. WHEN s.avaliacao = 2
  14. THEN 'Razoável'
  15. WHEN s.avaliacao = 3
  16. THEN 'Bom'
  17. WHEN s.avaliacao = 4
  18. THEN 'Muito Bom'
  19. WHEN s.avaliacao = 5
  20. THEN 'Excelente'
  21. END avaliacao,
  22. COUNT(s.avaliacao) total
  23. FROM satisfacao s
  24. WHERE DATE_FORMAT(s.data_avaliacao,'%Y-%m') BETWEEN '2019-04' AND '2019-07'
  25. GROUP BY s.avaliacao, DATE_FORMAT(s.data_avaliacao, '%m')
  26. ) a
  27. GROUP BY a.data_avaliacao, a.avaliacao
  28.  
  29. data | Bom | Muito Bom | Excelente |
  30. "4" | "0" | "0" | "1" |
  31. "5" | "0" | "0" | "28" |
  32. "6" | "1" | "0" | "0" |
  33. "6" | "0" | "0" | "42" |
  34. "7" | "1" | "0" | "0" |
  35. "7" | "0" | "0" | "4" |
  36. "7" | "0" | "1" | "0" |
  37.  
  38. data | Bom | Muito Bom | Excelente |
  39. "4" | "0" | "0" | "1" |
  40. "5" | "0" | "0" | "28" |
  41. "6" | "1" | "0" | "42" |
  42. "7" | "1" | "1" | "4" |
  43.  
  44. BEGIN
  45. SET @_sqlNota = NULL;
  46. SET @_dtInicio = DATE_FORMAT(p_inicio, '%Y-%m');
  47. SET @_dtFim = DATE_FORMAT(p_fim, '%Y-%m');
  48. /*
  49. 1. Ruim
  50. 2. Razoável
  51. 3. Bom
  52. 4. Muito Bom
  53. 5. Excelente
  54. */
  55. SELECT GROUP_CONCAT(
  56. CONCAT( 'IFNULL( SUM( CASE WHEN a.avaliacao=''',a.avaliacao,''' THEN total END),0 ) AS `',a.avaliacao,'`' )
  57. )
  58. INTO @_sqlNota
  59. FROM (
  60. SELECT CASE
  61. WHEN s.avaliacao = 1
  62. THEN 'Ruim'
  63. WHEN s.avaliacao = 2
  64. THEN 'Razoável'
  65. WHEN s.avaliacao = 3
  66. THEN 'Bom'
  67. WHEN s.avaliacao = 4
  68. THEN 'Muito Bom '
  69. WHEN s.avaliacao = 5
  70. THEN 'Excelente'
  71. END avaliacao
  72. FROM satisfacao s
  73. WHERE DATE_FORMAT(s.data_avaliacao,'%Y-%m') BETWEEN @_dtInicio AND @_dtFim
  74. GROUP BY s.avaliacao
  75. ) a;
  76.  
  77.  
  78. SET @_sqlMeses = CONCAT(
  79. 'SELECT
  80. fc_nomeMes(MONTH(a.data_avaliacao)) mes ,',
  81. @_sqlNota,
  82. ' FROM
  83. (
  84. SELECT s.data_avaliacao,
  85. CASE
  86. WHEN s.avaliacao = 1
  87. THEN 'Ruim'
  88. WHEN s.avaliacao = 2
  89. THEN 'Razoável'
  90. WHEN s.avaliacao = 3
  91. THEN 'Bom'
  92. WHEN s.avaliacao = 4
  93. THEN 'Muito Bom'
  94. WHEN s.avaliacao = 5
  95. THEN 'Excelente'
  96. END avaliacao,
  97. COUNT(s.avaliacao) total
  98. FROM satisfacao s
  99. WHERE DATE_FORMAT(s.data_avaliacao,'%Y-%m') BETWEEN '',@_dtInicio,'' AND '',@_dtFim,''
  100. GROUP BY DATE_FORMAT(s.data_avaliacao, '%Y-%m'), s.avaliacao
  101. ) a
  102. GROUP BY a.data_avaliacao'
  103. );
  104. select @_sqlMeses;
  105.  
  106. PREPARE stmt FROM @_sqlMeses;
  107. EXECUTE stmt;
  108. DEALLOCATE PREPARE stmt;
  109. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement