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

PostgreSQL中如何按指定类型统计两列的唯一值数量

解决方案

数据结构

原始数据表结构及示例数据如下:

timeIDReQtypeReqName
1345121test
1346132test
1352141hello world
1352153fith
1354161hello world
1357174apple

需求说明

在指定时间范围(例如最近30分钟)内,获取两个统计结果:

  1. 按ReqName分组的请求计数
  2. 按ReqType分组的请求计数

实现方式

方式1:执行两个独立查询(推荐,结果清晰)

两个查询逻辑独立,返回结果分别对应需求中的两个统计表格:

查询1:按ReqName统计
SELECT COUNT(ID) AS count, ReqName
FROM your_table_name
WHERE time >= NOW() - INTERVAL 30 MINUTE -- 替换为你的时间范围条件
GROUP BY ReqName
ORDER BY count DESC;

返回结果示例:

countReqName
2test
2hello world
1fith
1apple
查询2:按ReqType统计
SELECT COUNT(ID) AS count, ReqType
FROM your_table_name
WHERE time >= NOW() - INTERVAL 30 MINUTE -- 替换为你的时间范围条件
GROUP BY ReqType
ORDER BY count DESC;

返回结果示例:

countReqType
31
12
13
14

方式2:合并为单个查询结果(带统计类型标识)

如果需要一次查询获取所有统计数据,可通过UNION ALL合并结果,新增字段区分统计类型:

SELECT 'ReqName' AS stat_type, COUNT(ID) AS count, ReqName AS group_value
FROM your_table_name
WHERE time >= NOW() - INTERVAL 30 MINUTE
GROUP BY ReqName

UNION ALL

SELECT 'ReqType' AS stat_type, COUNT(ID) AS count, CAST(ReqType AS CHAR) AS group_value
FROM your_table_name
WHERE time >= NOW() - INTERVAL 30 MINUTE
GROUP BY ReqType

ORDER BY stat_type, count DESC;

返回结果示例:

stat_typecountgroup_value
ReqName2test
ReqName2hello world
ReqName1fith
ReqName1apple
ReqType31
ReqType12
ReqType13
ReqType14

注意事项

  • 替换your_table_name为实际表名
  • 时间条件需根据数据库类型调整:MySQL用NOW() - INTERVAL 30 MINUTE,PostgreSQL用CURRENT_TIMESTAMP - INTERVAL '30 minutes',SQL Server用DATEADD(MINUTE, -30, GETDATE())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:20:36