Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

[SOLUCIONADO] Como ordenar por nombre del mes

Estas en el tema de Como ordenar por nombre del mes en el foro de PostgreSQL en Foros del Web. Buenas a todos, ¿Qué tal? Espero que vaya bien. Tengo un problema con un query, como puedo ordenar por mes de manera que me quede ...
  #1 (permalink)  
Antiguo 21/08/2016, 02:32
 
Fecha de Ingreso: agosto-2015
Mensajes: 40
Antigüedad: 9 años, 3 meses
Puntos: 0
Como ordenar por nombre del mes

Buenas a todos,

¿Qué tal?

Espero que vaya bien.

Tengo un problema con un query, como puedo ordenar por mes de manera que me quede Enero primero, Febrero segundo, Marzo tercero, ..., Diciembre último.

Ahora mismo se me ordenan alfabéticamente(Primero abril, Segundo Agosto...), pero yo NO quiero esto. Yo quiero que salgan primeros los que he comentado. Este es mi query:

select to_char(fechaTimeStamp, 'Month'), sum(valor)
from tabla
group by 1
order by 1 asc

Muchas gracias a todos por la ayuda.
¡Saludos!
  #2 (permalink)  
Antiguo 22/08/2016, 07:51
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: Como ordenar por nombre del mes

Intenta haciendo order by asi:
Código SQL:
Ver original
  1. SELECT to_char(fechaTimeStamp, 'Month'), SUM(valor)
  2. FROM tabla
  3. GROUP BY 1
  4. ORDER BY  TO_NUMBER(to_char(fechaTimeStamp, 'MM')) ASC
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 25/08/2016, 16:14
 
Fecha de Ingreso: agosto-2015
Mensajes: 40
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Como ordenar por nombre del mes

Hola huesos52,

Muchas gracias por tu respuesta, pero sigue SIN funcionar...este es mi query ahora:

Código SQL:
Ver original
  1. SELECT to_char(fechaTimeStamp, 'Month'), SUM(valor)
  2. FROM tabla
  3. GROUP BY 1
  4. ORDER BY  TO_NUMBER(to_char(fechaTimeStamp, 'MM')) ASC

¿Alguna otra solución?

Gracias por tu ayuda compañero.
Un saludo.

Última edición por gnzsoloyo; 26/08/2016 a las 08:56
  #4 (permalink)  
Antiguo 26/08/2016, 09:01
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Como ordenar por nombre del mes

Tal vez:

Código SQL:
Ver original
  1. SELECT to_char(fechaTimeStamp, 'Month'), SUM(valor)
  2. FROM tabla
  3. GROUP BY to_number(to_char(fechaTimeStamp, 'YYYYMM'))
  4. ORDER BY to_number(to_char(fechaTimeStamp, 'YYYYMM'))
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 27/08/2016, 04:24
 
Fecha de Ingreso: agosto-2015
Mensajes: 40
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Como ordenar por nombre del mes

Hola gnzsoloyo,

Gracias por tu rápida respuesta.

Pero sigue sin funcionar, este es el error que me da:

Código HTML:
ERROR: function to_number(text) does not exist
  Hint: No function matches the given name and argument types. You might need to add explicit type casts.
Las fechas NO son del mismo año.

Yo lo que quiero es sumar todos los valores de las fechas del 2015 y que me devuelva en total 12 registros. Un registro del mes de Enero con la suma total de todos los valores de los registros de enero del 2015. Despues otro con el mes de Febrero con la suma total de todos los valores de los registros de febrero del 2015...etc etc hasta diciembre y que esten ordenados por Enero, Febrero, Marzo..Diciembre

¿Me explico?

Este query me devuelve más de 12 registros, muchos más...por lo tanto no es correcto solo quiero 12 registros uno para cada mes y con la suma total de cada uno del 2015.

¿Cómo sería?

Gracias por vuestra ayuda.

Un saludo para los dos.

Última edición por alberto2; 27/08/2016 a las 15:27
  #6 (permalink)  
Antiguo 31/08/2016, 07:49
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: Como ordenar por nombre del mes

Entiendo.

Para lograr eso, debes hacer uso de subconsultas y el comando case.
Código SQL:
Ver original
  1. SELECT *FROM
  2. (
  3. SELECT to_char(fecha_timestamp, 'YYYY') anio,to_char(fecha_timestamp, 'Month') mes, SUM(valor) valor
  4. FROM tabla
  5. GROUP BY to_char(fecha_timestamp, 'YYYY'),to_char(fecha_timestamp, 'Month')
  6. ) meses
  7. ORDER BY (CASE WHEN meses.mes='January' THEN 1
  8.            WHEN meses.mes='February' THEN 2
  9.            WHEN meses.mes='March' THEN 3
  10.            WHEN meses.mes='April' THEN 4
  11.            WHEN meses.mes='May' THEN 5
  12.            WHEN meses.mes='June' THEN 6
  13.            WHEN meses.mes='July' THEN 7
  14.            WHEN meses.mes='August' THEN 8
  15.            WHEN meses.mes='September' THEN 9
  16.            WHEN meses.mes='October' THEN 10    
  17.            WHEN meses.mes='November' THEN 11    
  18.            WHEN meses.mes='December' THEN 12    
  19.            ELSE 0 END
  20.       );

También puse el año, pero si deseas, lo puedes quitar como culumna y hacerlo en el where como filtro. De lo contrario, te mezclaría varios años en caso de que tengas mas registros.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: nombre, query
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:03.