Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

194
Vistas
Cómo fusionar datos en una línea

Tengo datos en una base de datos PostgreSQL en el siguiente formato:

 unique_key category date_period value

Así por ejemplo.

 agriculture_all agriculture 2021 15 agriculture_partial agriculture 2021 10 science_all science 2021 83 science_partial science 2021 32

La consulta que quiero ejecutar es GROUP BY según la category y el date_period , pero luego mostrar los valores uno al lado del otro.

 **[query here]** output: category date_period all partial agriculture 2021 15 10 science 2021 83 32

Se siente como una solicitud realmente simple, pero estoy luchando para que funcione correctamente en SQL. Cualquier consejo apreciado.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

En PostgreSQL puede usar una consulta simple usando sum con filter :

 select category, sum(value) filter (where unique_key like '%_all') all, sum(value) filter (where unique_key like '%_partial') partial from tbl group by category;

Violín de filtro de suma de PostgreSQL

Para evitar valores null , se puede aplicar la función coalesce :

 select category, coalesce(sum(value) filter (where unique_key like '%_all'), 0) all, coalesce(sum(value) filter (where unique_key like '%_partial'), 0) partial from tbl group by category;

Filtro coalescente de PostgreSQL

over 4 years ago · Santiago Trujillo Denunciar

0

Podrías usar una expresión de tabla común...

 with partial as (select category, date_period, value from t1 where unique_key ilike '%partial%' ) select a.category, a.date_period, a.value as all, coalesce(p.value, 0) as partial from t1 a left join partial p on p.category = a.category and p.date_period = a.date_period where a.unique_key ilike '%all%'

db-violín aquí

over 4 years ago · Santiago Trujillo Denunciar

0

Un poco de agregación condicional hará el truco.

 SELECT t.category , t.date_period , SUM(CASE WHEN t.unique_key LIKE '%\_all' THEN t.value ELSE 0 END) AS "all" , SUM(CASE WHEN t.unique_key LIKE '%\_partial' THEN t.value ELSE 0 END) AS "partial" FROM your_table t GROUP BY t.category, t.date_period ORDER BY t.category, t.date_period
categoría | fecha_periodo | todos | parcial
:----------- | ----------: | --: | ------:
agricultura | 2021 | 15 | 10
ciencia | 2021 | 83 | 32

db<>violín aquí

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda