You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL Server中查询拥有最高日期频次的城市?

解决方案

给你几种SQL Server下的实现方法,按需选就行:

方法一:用TOP 1 WITH TIES直接获取

这种方法能直接返回所有频次最高的记录(包括多个城市并列第一的情况):

SELECT TOP 1 WITH TIES D.CANTON, D.FECHA, COUNT(D.FECHA) AS FRECUENCIA
FROM [dbo].[DETENCION] D
GROUP BY D.CANTON, D.FECHA
ORDER BY FRECUENCIA DESC

执行后,所有FRECUENCIA等于全局最大值的行都会被返回,对应的CANTON就是你要找的城市。

方法二:窗口函数RANK()筛选排名第一的城市

如果只需要城市名称(不需要对应的日期和频次),可以用窗口函数先算好全局排名,再筛出排名第一的:

WITH RankedDetenciones AS (
    SELECT 
        D.CANTON, 
        COUNT(D.FECHA) AS FRECUENCIA,
        RANK() OVER (ORDER BY COUNT(D.FECHA) DESC) AS RankNum
    FROM [dbo].[DETENCION] D
    GROUP BY D.CANTON, D.FECHA
)
SELECT DISTINCT CANTON
FROM RankedDetenciones
WHERE RankNum = 1

要是需要保留日期和频次信息,去掉DISTINCT就行。

方法三:先查最大频次再匹配对应城市

先找出全局最高的频次值,再关联查询对应的城市记录,逻辑清晰,适合分步看中间结果:

DECLARE @MaxFrecuencia INT;
SELECT @MaxFrecuencia = MAX(FRECUENCIA)
FROM (
    SELECT COUNT(D.FECHA) AS FRECUENCIA
    FROM [dbo].[DETENCION] D
    GROUP BY D.CANTON, D.FECHA
) AS Frecuencias;

SELECT D.CANTON, D.FECHA, COUNT(D.FECHA) AS FRECUENCIA
FROM [dbo].[DETENCION] D
GROUP BY D.CANTON, D.FECHA
HAVING COUNT(D.FECHA) = @MaxFrecuencia;

内容的提问来源于stack exchange,提问作者Mr M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 11:47:43