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

如何使用SQL按STORE_ID分组统计最高频营业时间及对应占比

结论

仅通过SQL语句完全可以实现该统计需求,以下是具体实现方案。

实现逻辑
  • 第一层聚合:按STORE_ID、OPENING_HOUR分组,统计每个门店各开门小时的出现次数,同时计算对应门店的总营业记录数
  • 第二层排序:对每个门店下的所有开门小时,按出现次数倒序排序,同时计算各小时的频率占比
  • 结果过滤:取每个门店排序第一位的记录,即为该门店出现频率最高的开门小时及对应占比
参考SQL
WITH stat_info AS (
    SELECT
        STORE_ID,
        OPENING_HOUR,
        COUNT(1) AS hour_count,
        SUM(COUNT(1)) OVER (PARTITION BY STORE_ID) AS store_total_count
    FROM BUSINESS_HOURS
    GROUP BY STORE_ID, OPENING_HOUR
),
rank_info AS (
    SELECT
        STORE_ID,
        OPENING_HOUR,
        ROUND(hour_count * 1.0 / store_total_count, 1) AS FREQUENCY,
        ROW_NUMBER() OVER (PARTITION BY STORE_ID ORDER BY hour_count DESC) AS rank_num
    FROM stat_info
)
SELECT STORE_ID, OPENING_HOUR, FREQUENCY
FROM rank_info
WHERE rank_num = 1;
补充说明
  • 如果需要返回并列最高的所有开门小时,可将ROW_NUMBER()替换为RANK()函数
  • 代码中频率默认保留1位小数,可根据需求调整ROUND函数的第二个参数修改精度
  • 该SQL兼容所有支持窗口函数的主流数据库,包括MySQL 8.0+、PostgreSQL、Oracle、SQL Server等

内容的提问来源于stack exchange,提问作者Marcos Dias

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:54:05