problema de autoencuentro, creo?

Tengo una table (solo podría tener una) que se ve como se ve a continuación.

Contiene un código de planta, un número de artículo y lotes relacionados con ese artículo.

plant - code - batch - value - volume - added_date A1 1000 A1 10 20 date A1 2000 A7 20 15 date A1 1000 A1 5 10 later than first A1 batch A2 200 A8 10 9 date A1 2000 A10 20 20 date 

¿Cómo podría presentar esta información de esta manera? Para cada planta y código, muestre el número DISTINCT de lotes y el volumen del último lote agregado (tenga en count que el código 1000 en la plant A1 muestra solo 10, ya que es el volumen de la última lote agregado).

 plant - code - batches - volume A1 1000 1 10 A1 2000 2 35 A2 200 1 9 

Recibí un poco de ayuda de un tipo aquí antes, y esa consulta funciona muy bien hasta que intenté get el volumen solo de los últimos lotes si hay dos lotes con el mismo número para el mismo producto en la misma planta.

 SELECT code, plant, COUNT(DISTINCT(batch)) as Batches, SUM(value) as TotalValue, SUM(volume) as TotalVolume, SUM(value * risk) as TotalRisk, FROM lists GROUP BY code, plant 

Supongo que podrías hacerlo con algunas combinaciones de concat y self, pero no soy lo suficientemente hábil para trabajar con una sola tabla: /

¡Gracias por adelantado!

Editar: Bueno, en realidad, la respuesta a la que se vinculó Adrian resolvió el problema descrito … sin embargo, parece ser difícil hacer que todo lo demás funcione con esa solución. Solo describí una parte de mi "problema", lo que pensé fue suficiente para luego resolver el rest yo mismo. Pero estaba equivocado. No solo necesito el último lote y volumen agregados, también tengo que hacer algunas operaciones SUM en los lotes. Estoy pensando que puede ser mejor para mí colocar los datos en dos tablas diferentes y trabajar desde allí.

Aquí hay una posibilidad de usar una subconsulta JOIN que recupera el volumen por MAX(added_date) :

 SELECT l.code, l.plant, COUNT(DISTINCT l.batch) AS Batches, lvol.vol AS volume FROM lists l JOIN ( SELECT code, plant, volume AS vol FROM lists GROUP BY code, plant HAVING added_date = MAX(added_date) ) lvol ON l.code = lvol.code AND l.plant = lvol.plant AND l.volume = lvol.volume GROUP BY l.code, l.plant 
 SELECT t.*, (SELECT volume FROM lists WHERE plant = t.plant AND code = t.code ORDER BY added_date DESC LIMIT 1 --Take the latest record for the plant & code ) AS volume FROM ( SELECT code, plant, COUNT(DISTINCT(batch)) as Batches, SUM(value) as TotalValue, SUM(value * risk) as TotalRisk FROM lists GROUP BY code, plant ) AS t