2011-05-20 12 views
10

Hola a todos Tengo una tabla de 'widgets' que tiene las siguientes columnas: widget, acción, timestamp_. Lo que queremos hacer es extraer todos los widgets que fueron rechazados más de una vez al día entre ciertas fechas. Así que aquí hay una tabla de ejemploOracle/SQL - Agrupación de elementos por acción por día en el tiempo

widget  action  timestamp_ 
------------------------------------------- 
type1  reject  2011-05-10 08:00:00 
type1  reject  2011-05-10 09:00:00 
type1  reject  2011-05-10 09:30:00 
type2  reject  2011-05-11 09:30:00 
type3  reject  2011-05-11 09:30:00 
type1  reject  2011-05-11 09:30:00 
type1  reject  2011-05-11 09:30:00 
type2  reject  2011-05-12 10:30:00 
type2  reject  2011-05-12 12:30:00 
type3  reject  2011-05-12 12:30:00 

así que preveo que quieran ver resultados en una de estas dos maneras ....

entre la fecha de X e Y hubo dos widgets que fueron rechazados varias veces en días sueltos

Esto sería ver que tipo 1 fue rechazado más de una vez al día, como era de tipo 2 por lo tanto la cuenta es: 2

O

Displa y cada widget junto con la fecha en que fue rechazado más de una vez y cuántas veces. Ejemplo ...

widget  date   count 
--------------------------------- 
type1  2011-05-10  3 
type1  2011-05-11  2 
type2  2011-05-12  2 

Probablemente esta sea la salida preferida ... ¿pero cómo?

¡Gracias de antemano!

Respuesta

9

Esto daría a su salida:

SELECT Widget, to_char(timestamp_,'YYYY-MM-DD'), Count(Widget) 
FROM Widget 
WHERE timestamp_ BETWEEN to_date('YYYY-MM-DD HH24:MI:SS','%date1%') AND to_date('YYYY-MM-DD HH24:MI:SS','%date2%') 
AND action LIKE 'reject' 
GROUP BY Widget, to_char(timestamp_,'YYYY-MM-DD') 
HAVING Count(Widget) > 1; 

Por supuesto, tendrá que reemplazar las variables de fecha.

+0

Reemplazó las variables de fecha y recibió este error: "CNT": identificador no válido – dscl

+0

@dscl: Lo siento, no pude probarlo con un db Oracle. Por favor pruébalo ahora. – MPelletier

+0

Sin preocupaciones; sin embargo ahora recibo el mismo error pero para Date_. "DATE_": identificador no válido – dscl

0

Prueba el uno a continuación y obtendrá lo que quiere: -

Select widget,convert(varchar,[timestp],102) As Date,COUNT(timestp) as Count 
    From MTest 
    group by widget,[action],convert(varchar,[timestp],102) 
    having COUNT(timestp)>1 
+0

Agregué una cláusula where en la acción = 'rechazado', por lo que no recibo resultados innecesarios. También recibo un error: 'falta expresión' – dscl

+0

que está intentando en SQL Server u Oracle ?? – Sanjay

Cuestiones relacionadas