I have a services table with the following column-rows on a MySQL database
`id`    `service_rendered`  `created_at`
 1       repair              2016-11-19 14:40:56
 2       install             2016-11-19 14:40:58
 3       repair              2016-11-19 14:44:27
 4       install             2016-11-19 14:50:35
I'm trying to count the number of services and the last date/time it was rendered. Column created_at is a datetime type.
The SQL statement that I'm running is:
SELECT COUNT(`service_rendered`) as `count_service`, `service_rendered`, `created_at` as `last_rendered`
FROM services
WHERE `id` IN (1,2,3)
GROUP BY `service_rendered`
ORDER BY `created_at` DESC
But what I'm getting is:
`count_service`    `service_rendered`  `last_rendered`
 2                  repair              2016-11-19 14:40:56
 1                  install             2016-11-19 14:40:58
How do I write my SQL so that I am able to get 2016-11-19 14:44:27 on repair?
You can use the following solution using MAX on the created_at column:
SELECT COUNT(`service_rendered`) AS `count_service`, `service_rendered`, MAX(`created_at`) AS `last_rendered`
FROM services
WHERE `id` IN (1,2,3)
GROUP BY `service_rendered`
ORDER BY `last_rendered` DESC
demo: http://sqlfiddle.com/#!9/3906b7/2
You want to ORDER BY created_at DESC?
You have to use the alias of the column last_rendered, so replace ORDER BY created DESC with ORDER BY last_rendered DESC
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With