2014-10-08 44 views
0

我有要求显示1到20个问题,0-23小时内有多少个小组回答。表结构要查找一小时内用户数量回答了多少个问题

Team_id Question_id Updated 
124  25092  02-SEP-14 11:30:12 AM  
15  25076  02-SEP-14 02:31:15 PM  
258  25061  02-SEP-14 03:02:33 PM  
298  25196  02-SEP-14 03:32:49 PM  
450  25203  02-SEP-14 07:01:05 PM  
471  25351  02-SEP-14 07:47:31 PM  
482  25350  02-SEP-14 08:01:03 PM  
78  24924  02-SEP-14 08:01:29 PM  
541  26032  02-SEP-14 09:35:00 PM  
708  26485  02-SEP-14 12:19:48 PM  
726  26125  02-SEP-14 01:00:11 PM  
145  26221  02-SEP-14 03:45:32 PM  
824  26436  02-SEP-14 06:30:16 PM  
87  26505  02-SEP-14 06:30:22 PM  
825  26488  02-SEP-14 06:31:34 PM  
466  26488  02-SEP-14 06:34:48 PM  
868  26091  02-SEP-14 08:30:59 PM  
1356 28852  02-SEP-14 07:45:14 PM  
1342 28852  02-SEP-14 07:45:27 PM 

查询应该返回

Hours   1 2  3  4  5 to 20 
10    6 0  2  3  6 to 25 
11    3 2  1  1  7 to 300 
12    2 0  5  0  7 to 30 
13    1 6  1  1  7 to 40 
  1. 这些都是球队的数量,在每小时10
  2. 这些都是球队的数量,在小时只回答了2回答过的问题只有1个问题10等

注意这不是第一或第2个问题。

感谢 阿伦

+0

什么表示以下数字:1 2 3 4 5到20? – Rusty 2014-10-08 08:29:39

+0

实际上有20个问题需要回答。那么有多少个团队只回答1个问题以及多少个这样的问题。 – Arunbabu 2014-10-08 08:32:12

+0

任何人有任何想法? – Arunbabu 2014-10-08 09:05:03

回答

0

你需要这样的事情,我想:

select hour, 
     count(decode(cnt, 1, 1)) as q1, 
     count(decode(cnt, 2, 1)) as q2, 
     count(decode(cnt, 3, 1)) as q3, 
     count(decode(cnt, 4, 1)) as q4, 
     ... 
     count(decode(cnt, 20, 1)) as q20 
    from (
     select to_char(updated, 'HH24') as hour 
      , count(*) as cnt 
     from &table_name 
     group by to_char(updated, 'HH24'), team_id 
     ) 
group by hour; 
0

据我了解,也许你想是这样的:

SQL> WITH DATA AS(
    2 SELECT 124 team_id, 25092 question_id, to_date('02-SEP-14 11:30:12 AM','DD-MON-RR HH:MI:SS AM') UPDATED FROM DUAL UNION ALL 
    3 SELECT 15 ,  25076  ,to_date('02-SEP-14 02:31:15 PM','DD-MON-RR HH:MI:SS AM') FROM DUAL UNION ALL 
    4 SELECT 258 , 25061  ,to_date('02-SEP-14 03:02:33 PM','DD-MON-RR HH:MI:SS AM') FROM DUAL UNION ALL 
    5 SELECT 298 , 25196  ,to_date('02-SEP-14 03:32:49 PM','DD-MON-RR HH:MI:SS AM') FROM DUAL UNION ALL 
    6 SELECT 450 , 25203  ,to_date('02-SEP-14 07:01:05 PM','DD-MON-RR HH:MI:SS AM') FROM DUAL UNION ALL 
    7 SELECT 471 , 25351  ,to_date('02-SEP-14 07:47:31 PM','DD-MON-RR HH:MI:SS AM') FROM DUAL UNION ALL 
    8 SELECT 482 , 25350  ,to_date('02-SEP-14 08:01:03 PM','DD-MON-RR HH:MI:SS AM') FROM DUAL UNION ALL 
    9 SELECT 78 , 24924  ,to_date('02-SEP-14 08:01:29 PM','DD-MON-RR HH:MI:SS AM') FROM DUAL UNION ALL 
10 SELECT 541 , 26032  ,to_date('02-SEP-14 09:35:00 PM','DD-MON-RR HH:MI:SS AM') FROM DUAL UNION ALL 
11 SELECT 708 , 26485  ,to_date('02-SEP-14 12:19:48 PM','DD-MON-RR HH:MI:SS AM') FROM DUAL UNION ALL 
12 SELECT 726 , 26125  ,to_date('02-SEP-14 01:00:11 PM','DD-MON-RR HH:MI:SS AM') FROM DUAL UNION ALL 
13 SELECT 145 , 26221  ,to_date('02-SEP-14 03:45:32 PM','DD-MON-RR HH:MI:SS AM') FROM DUAL UNION ALL 
14 SELECT 824 , 26436  ,to_date('02-SEP-14 06:30:16 PM','DD-MON-RR HH:MI:SS AM') FROM DUAL UNION ALL 
15 SELECT 87 , 26505  ,to_date('02-SEP-14 06:30:22 PM','DD-MON-RR HH:MI:SS AM') FROM DUAL UNION ALL 
16 SELECT 825 , 26488  ,to_date('02-SEP-14 06:31:34 PM','DD-MON-RR HH:MI:SS AM') FROM DUAL UNION ALL 
17 SELECT 466 , 26488  ,to_date('02-SEP-14 06:34:48 PM','DD-MON-RR HH:MI:SS AM') FROM DUAL UNION ALL 
18 SELECT 868 , 26091  ,to_date('02-SEP-14 08:30:59 PM','DD-MON-RR HH:MI:SS AM') FROM DUAL UNION ALL 
19 SELECT 1356 , 28852  ,to_date('02-SEP-14 07:45:14 PM','DD-MON-RR HH:MI:SS AM') FROM DUAL UNION ALL 
20 SELECT 1342 , 28852  ,to_date('02-SEP-14 07:45:27 PM','DD-MON-RR HH:MI:SS AM') FROM DUAL) 
21 SELECT 5 hours, 
22 COUNT(team_id) 
23 FROM DATA 
24 WHERE UPDATED BETWEEN to_date('02-SEP-14 10:00:01','DD-MON-RR HH24:MI:SS') AND to_date('02-SEP-14 14:59:59','DD-MON-RR HH24:MI:SS') 
25 UNION 
26 SELECT 6 hours, 
27 COUNT(team_id) 
28 FROM DATA 
29 WHERE UPDATED BETWEEN to_date('02-SEP-14 10:00:01','DD-MON-RR HH24:MI:SS') AND to_date('02-SEP-14 15:59:59','DD-MON-RR HH24:MI:SS') 
30 UNION 
31 SELECT 10 hours, 
32 COUNT(team_id) 
33 FROM DATA 
34 WHERE UPDATED BETWEEN to_date('02-SEP-14 10:00:01','DD-MON-RR HH24:MI:SS') AND to_date('02-SEP-14 19:59:59','DD-MON-RR HH24:MI:SS') 
35 UNION 
36 SELECT 24 hours, 
37 COUNT(team_id) 
38 FROM DATA 
39 WHERE UPDATED BETWEEN to_date('02-SEP-14 00:00:01','DD-MON-RR HH24:MI:SS') AND to_date('02-SEP-14 23:59:59','DD-MON-RR HH24:MI:SS') 
40/

    HOURS COUNT(TEAM_ID) 
---------- -------------- 
     5    4 
     6    7 
     10    15 
     24    19 

的时间间隔为一个例子,我采取了不同的时间间隔,HOURS列是在WHERE子句中提到的时间间隔。

相关问题