1

表格显示车牌号,显示时间,摄像头位置。我需要找到每周出现不止一次的汽车,我需要知道他们是谁,每周的出现频率,以及满足条件的汽车总数。

我试图手动分割时间段,但这太低效了。我尝试了以下查询:

   SELECT *, 
       Variance(Time_to_sec(time)), 
       Count(*) 
   FROM   trafficdata.anpr_in 
   WHERE  location = 'a35.1.ob.1' 
       AND Date(time) BETWEEN '2012-05-09'AND '2012-05-15' 
       AND Time(time) BETWEEN '07:00:00' AND '07:05:00' 
   GROUP  BY plate 
   HAVING ( Count(plate) > 3 ); 

输入表如下所示:

  plate         location     number                    time
T971JUR     A3024.7.IB.1         96     2012-05-13 18:06:17
HN52YWE     A3024.13.OB.1        94     2012-05-13 18:09:53
4

2 回答 2

1

当您说“我需要找到每周出现多次的汽车”时,您的意思是:一周内出现多次的汽车吗?或者,在此期间每周都会出现不止一次的汽车?

第一个可以回答为:

SELECT plate, week(time), count(*)
FROM   trafficdata.anpr_in 
WHERE  location = 'a35.1.ob.1' AND
       Date(time) BETWEEN'2012-05-09'AND '2012-05-15' AND
       Time(time) BETWEEN '07:00:00' AND '07:05:00' 
GROUP  BY plate , week(time)
HAVING count(*) > 1;

第二个可以回答为:

select plate
from (SELECT plate, week(time), count(*) as cnt
      FROM   trafficdata.anpr_in 
      WHERE  location = 'a35.1.ob.1' AND
             Date(time) BETWEEN'2012-05-09'AND '2012-05-15' AND
             Time(time) BETWEEN '07:00:00' AND '07:05:00' 
      GROUP  BY plate , week(time)
      HAVING count(*) > 1
     ) t
having min(plate) > 1;
于 2013-08-29T11:03:21.070 回答
1

如果你的桌子是

create table tickets (car_number varchar(10),date_of_offense date, 
camera_number varchar(10));

然后

select car_number from tickets group by week(date_of_offense ) having count(*)>1

会给你那些在一周内冒犯两次或更多的车

于 2013-08-29T10:47:17.200 回答