2011-05-20 43 views
10

大家好我有一個'小部件'表,它具有以下列:小部件,操作,時間戳_。我們想要做的是拉出在特定日期之間每天被拒絕的所有小部件。因此,這裏是一個示例表Oracle/SQL - 通過一天中的行動對項目進行分組

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 

所以我期待想看看在這兩種方式中的一個結果....

日期X和Y之間有跡象表明是在單日拒絕了多次,兩個小部件

這將看到TYPE1被拒絕不止一次在一天因爲是TYPE2因此計數爲:2

OR

DISPLA每個小部件以及它被拒絕的日期不止一次和多少次。例子..

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

這可能是首選的輸出......但如何?

在此先感謝!

回答

9

這將使您的輸出:

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; 

當然,你要更換日期變量。

+0

取代日期變量並收到此錯誤:「CNT」:無效的標識符 – dscl 2011-05-20 12:15:40

+0

@dscl:對不起,我無法對Oracle數據庫進行嘗試。請現在試試。 – MPelletier 2011-05-20 12:18:19

+0

不用擔心;但是現在我得到了相同的錯誤,但Date_。 「DATE_」:無效標識符 – dscl 2011-05-20 14:10:33

0

嘗試下面的一個,你會得到你想要的東西: -

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

我在action ='rejected'的where子句中添加了一個,所以我不會收回不需要的結果。我也得到一個錯誤,雖然:'失蹤表達式' – dscl 2011-05-20 12:18:35

+0

你正在嘗試在SQL Server或Oracle? – Sanjay 2011-05-20 17:41:49

相關問題