[英]how to get the count showing up iper week
该表显示了车牌号,显示了时间,摄像头的位置。 我需要查找每周出现一次以上的汽车,我需要知道他们是谁,每周出现的频率,以及满足条件的汽车总数。
我尝试手动分割时间段,但是效率太低。 我尝试了以下查询:
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
如果你的桌子是
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
会给您带来一周内两次或两次以上冒犯的汽车
当您说“我需要查找每周出现不止一次的汽车”时,您的意思是:一周内出现不止一次的汽车吗? 还是在此期间每周出现多次的汽车?
第一个可以回答为:
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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.