【发布时间】:2020-09-28 08:56:16
【问题描述】:
这是我第一次询问有关 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) ) */ );
举个例子,我现在的桌子是这样的:
+-----+-----------+
| 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'。
我希望它让我明白了,我希望有一个不参考其他编程语言的解决方案...... 提前致谢!
【问题讨论】:
-
如果 ":val" 是 '...',结果一定是 '...' 为什么?解释每一行。 一个显示“伪代码”的示例它没有描述用于计数的分组。
-
产生所有计数的查询是什么。
-
@Akina 如果 ":val" 是 '13:00:00',结果必须是 '4'。这是因为从 12:25:00(不包括在内)到 13:10:00(包括在内)的时间段之间存在的“TICKET”的最大值实际上是“4”……我不知道不知道怎么用其他方式向你解释……
-
@Strawberry ` SELECT COUNT(
idT) FROMTICKETWHEREstartTimestartTime>(TIME(' :time')-间隔 35 分钟); ` 这会从 ":val" 生成一个 COUNT ... -
请通过编辑而非 cmets 进行澄清。这还不清楚。使用足够多的单词、句子和对部分示例的引用来清楚完整地表达你的意思。在给出业务关系(船舶)/关联或表(基础或查询结果)时,说明其中的一行根据其列值说明了业务情况。
标签: mysql sql database count max