es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cuando el uso de “partition by” en consultas de Redshift no está funcionando

Me gustaría excluir las subcategorías tag1, subtag2 y subtag3 de la etiqueta TAGVENTASpormes, pero el resto de lo que mencioné en la condición “where” debe incluirse en el recuento. No pude obtener el resultado deseado. ¿Alguien puede ayudarme a lograr lo mismo, lo cual sería muy apreciado?

selecciona o.etiqueta, 

o.ALGO, o.COSA, o.IGUAL, o.fecha, c.LO, c.MOSTRAR,
date<em>part(mes, o.fecha) como Mes,
date</em>part(día, o.fecha) como día,
count(o.id) sobre (partición por día, CUST<em>Id) como N°</em>VENTA,
count(o.id) sobre (partición por Mes, CUST<em>Id) como N°</em>VENTA<em>por</em>mes,
count(caso cuando (etiqueta <> 'sub<em>tag1' Y etiqueta <> 'sub</em>tag2' Y etiqueta <> 'sub<em>tag3') entonces o.id else 0 END) sobre (partición por Mes, CUST</em>Id) como TAG<em>VENTASpor</em>mes,
c.id como CUSTId

desde informacion_orden o
izquierda unirse configuración c en o.ALGO = c.ALGO

donde fecha >= '01/05/2021' Y etiqueta en ('sub<em>tag1', 'sub</em>tag2', 'sub<em>tag3', 'sub</em>tag4', 'sub<em>tag5',
 'sub</em>tag6') Y IGUAL = 'JACK'

agrupar por o.etiqueta, o.ALGO, o.COSA, o.IGUAL, o.fecha, c.LO, c.MOSTRAR, CUST_Id, o.id
ordenar por fecha
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para excluir las categorías sub_tag1, sub_tag2 y sub_tag3 de la etiqueta de TAG_SALES_by_month, necesitamos modificar la declaración CASE en la cláusula SELECT. Actualmente, la declaración CASE está contando todas las ventas excepto aquellas con esas tres etiquetas. Necesitamos cambiarla para contar solo las ventas que tienen una de las otras etiquetas. Aquí está la consulta modificada:

    select o.tag, 
     o.SOME, o.THING, o.ILIKE, o.date, c.THE, c.MOST,
    date_part(month, o.date) as Month,
    date_part(day, o.date) as day,
    count(o.id) over (partition by day, CUST_Id) as SALE_NO,
    count(o.id) over (partition by Month, CUST_Id) as SALE_NO_por_mes,
    count(case when (tag in ('sub_tag4', 'sub_tag5', 'sub_tag6')) then o.id else 0 END) over (partition by Month, CUST_Id) as TAG_SALES_por_mes,
    c.id as CUST_Id
    from order_info o
    left join config c on o.SOME = c.SOME
    where date >= '05/01/2021' AND tag in ('sub_tag1', 'sub_tag2', 'sub_tag3', 'sub_tag4', 'sub_tag5', 'sub_tag6') AND ILIKE = 'JACK'
     group by o.tag, o.SOME, o.THING, o.ILIKE, o.date, c.THE, c.MOST, CUST_Id, o.id
     order by date
    

    Cambiamos la declaración CASE para contar todas las ventas que tienen las etiquetas ‘sub_tag4’, ‘sub_tag5’ o ‘sub_tag6’, en lugar de excluir las etiquetas ‘sub_tag1’, ‘sub_tag2’ y ‘sub_tag3’.

    ¡Espero que esto ayude! Háganos saber si tiene alguna otra pregunta.

Comments are closed.