Hi all, I need your appreciated help.
I need this output:
+----------+--------+-----+------------------------+------------+
| COUNT(*) | Combo | Q | text | LastDate |
+----------+--------+-----+------------------------+------------+
| 5954 | Combo1 | 3 | to be treated | 20/02/2014 |
| 5954 | Combo1 | 118 | regular | 20/02/2014 |
| 5954 | Combo1 | 6 | verification Required | 20/02/2014 |
| 5954 | Combo1 | 9 | required control | 20/02/2014 |
| 7171 | Combo2 | 7 | regular | 20/02/2014 |
| 7171 | Combo2 | 1 | verification Required | 20/02/2014 |
| 7171 | Combo2 | 42 | required control | 20/02/2014 |
| 7888 | Combo3 | 379 | regular | 20/02/2014 |
| 7888 | Combo3 | 54 | verification Required | 20/02/2014 |
| 7888 | Combo3 | 78 | required control | 20/02/2014 |
| 1942 | Combo4 | 224 | regular | 20/02/2014 |
| 1942 | Combo4 | 26 | verification Required | 20/02/2014 |
+----------+--------+-----+------------------------+------------+
12 rows in set
And this is my step to step, first sql query:
mysql> SELECT
CASE
WHEN LEFT (area, 2) = '2I' THEN
'Combo1'
WHEN LEFT (area, 2) = '2M' THEN
'Combo2'
WHEN LEFT (area, 2) = '2O' THEN
'Combo3'
WHEN LEFT (area, 2) = '2S' THEN
'Combo4'
ELSE
'tot'
END AS Combo,
COUNT(*)
FROM
doTable
GROUP BY
LEFT (area, 2) WITH ROLLUP;
+--------+----------+
| Combo | COUNT(*) |
+--------+----------+
| Combo1 | 5954 |
| Combo2 | 7171 |
| Combo3 | 7888 |
| Combo4 | 1942 |
| Combo4 | 22955 |
+--------+----------+
5 rows in set
Next sql query:
mysql> SELECT
CASE
WHEN LEFT (area, 2) = '2I' THEN
'Combo1'
WHEN LEFT (area, 2) = '2M' THEN
'Combo2'
WHEN LEFT (area, 2) = '2O' THEN
'Combo3'
ELSE
'Combo4'
END AS Combo,
COUNT(text) AS q,
text AS text,
DATE_FORMAT(CURRENT_DATE(), '%d/%m/%Y') AS LastDate
FROM
doTable
WHERE
text IS NOT NULL
AND text > ''
GROUP BY
Combo,
text;
+--------+-----+------------------------+------------+
| Combo | q | text | LastDate |
+--------+-----+------------------------+------------+
| Combo1 | 3 | to be treated | 20/02/2014 |
| Combo1 | 118 | regular | 20/02/2014 |
| Combo1 | 6 | verification Required | 20/02/2014 |
| Combo1 | 9 | required control | 20/02/2014 |
| Combo2 | 7 | regular | 20/02/2014 |
| Combo2 | 1 | verification Required | 20/02/2014 |
| Combo2 | 42 | required control | 20/02/2014 |
| Combo3 | 379 | regular | 20/02/2014 |
| Combo3 | 54 | verification Required | 20/02/2014 |
| Combo3 | 78 | required control | 20/02/2014 |
| Combo4 | 224 | regular | 20/02/2014 |
| Combo4 | 26 | verification Required | 20/02/2014 |
+--------+-----+------------------------+------------+
12 rows in set
Final sql query:
mysql> SELECT
COUNT(*),
Combo,
Q,
text,
LastDate
FROM
(
SELECT
CASE
WHEN LEFT (area, 2) = '2I' THEN
'Combo1'
WHEN LEFT (area, 2) = '2M' THEN
'Combo2'
WHEN LEFT (area, 2) = '2O' THEN
'Combo3'
ELSE
'Combo4'
END AS Combo,
COUNT(text) AS q,
text AS text,
DATE_FORMAT(CURRENT_DATE(), '%d/%m/%Y') AS LastDate
FROM
doTable
WHERE
text IS NOT NULL
AND text > ''
GROUP BY
Combo,
text
) q
WHERE
q.text IS NOT NULL
AND q.text > ''
GROUP BY
Combo,
text;
+----------+--------+-----+------------------------+------------+
| COUNT(*) | Combo | Q | text | LastDate |
+----------+--------+-----+------------------------+------------+
| 1 | Combo1 | 3 | to be treated | 20/02/2014 |
| 1 | Combo1 | 118 | regular | 20/02/2014 |
| 1 | Combo1 | 6 | verification Required | 20/02/2014 |
| 1 | Combo1 | 9 | required control | 20/02/2014 |
| 1 | Combo2 | 7 | regular | 20/02/2014 |
| 1 | Combo2 | 1 | verification Required | 20/02/2014 |
| 1 | Combo2 | 42 | required control | 20/02/2014 |
| 1 | Combo3 | 379 | regular | 20/02/2014 |
| 1 | Combo3 | 54 | verification Required | 20/02/2014 |
| 1 | Combo3 | 78 | required control | 20/02/2014 |
| 1 | Combo4 | 224 | regular | 20/02/2014 |
| 1 | Combo4 | 26 | verification Required | 20/02/2014 |
+----------+--------+-----+------------------------+------------+
12 rows in set
The output is wrong… can you help me?
Thank you in advance for any help.