如何在一个计数范围内找到最大值

f4t66c6m  于 2021-08-09  发布在  Java
关注(0)|答案(2)|浏览(194)

这是我第一次问一个关于stackoverflow的问题,我最近使用了mysql。
我需要一个查询,让我找到一个最大的值从一系列的计数。
我将给你一个例子,显示一个“伪代码”显然不起作用:

/* function TicketCount(:time){ */
SELECT COUNT(`idT`)
FROM `TICKET`
WHERE `startTime`<=(TIME(':time')+INTERVAL 10 MINUTE) AND `startTime`>(TIME(':time')-INTERVAL 35 MINUTE);
/* } */

SELECT MAX( /* TicketCount( from (TIME(':time')-INTERVAL 35 MINUTE) to (TIME(':time')+INTERVAL 10 MINUTE) ) */ );

举个例子,我的table,现在是这样的:

+-----+-----------+
| idT | startTime |
+-----+-----------+
|  10 | 13:00:00  |
|   9 | 12:30:00  |
|   8 | 12:30:00  |
|   7 | 11:50:00  |
|   6 | 11:30:00  |
|  11 | 13:00:00  |
+-----+-----------+

如果“:val”是“13:00:00”,则结果必须是“4”。
如果“:val”是“11:00:00”,则结果必须是“2”。
如果“:val”为“13:35:00”,则结果必须为“0”。
我希望它让我明白,我希望有一个解决方案,不参考其他编程语言。。。提前谢谢!

m3eecexj

m3eecexj1#

SELECT SUM(startTime BETWEEN ADDTIME(@time, '-00:35:00') AND ADDTIME(@time, '00:10:00'))
FROM ticket;

小提琴

xv8emn3q

xv8emn3q2#

请考虑以下问题,但请注意,这不包括关系。。。

SELECT :val1
     , COUNT(*) total 
  FROM TICKET 
 WHERE startTime <= (TIME(':val')+INTERVAL 10 MINUTE) 
   AND startTime >  (TIME(':val')-INTERVAL 35 MINUTE)
 UNION
SELECT :val2
     , COUNT(*)  
  FROM TICKET 
 WHERE startTime <= (TIME(':val')+INTERVAL 10 MINUTE) 
   AND startTime >  (TIME(':val')-INTERVAL 35 MINUTE)
SELECT :val3
     , COUNT(*)  
  FROM TICKET 
 WHERE startTime <= (TIME(':val')+INTERVAL 10 MINUTE) 
   AND startTime >  (TIME(':val')-INTERVAL 35 MINUTE)
 ORDER  
    BY total DESC 
 LIMIT 1;

相关问题