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

基于priority_list与priority_list_delete表的多维度统计查询需求

嘿,我来帮你搞定这个查询!你已经完成了大部分需求,现在只需要把priority_list_delete按类别分组的计数整合到单行结果里就行啦。

因为要把分组结果塞进单行,我们可以用聚合函数把分组数据转换成结构化格式(比如JSON),这样就能和其他统计值共存。下面是针对主流数据库的完善方案:

针对MySQL 8+ / PostgreSQL的版本

这个版本用JSON格式返回分组结果,方便后续程序解析:

SELECT 
  -- 总记录数:两张表的计数之和
  (SELECT COUNT(*) FROM priority_list) + (SELECT COUNT(*) FROM priority_list_delete) AS tot_count,
  -- priority_list表的单独记录数
  (SELECT COUNT(*) FROM priority_list) AS prior_cnt,
  -- priority_list_delete表的单独记录数
  (SELECT COUNT(*) FROM priority_list_delete) AS prior_del_cnt,
  -- priority_list_delete按类别分组的记录数,转成JSON对象
  (SELECT JSON_OBJECT_AGG(category, cnt)
   FROM (
     SELECT category, COUNT(*) AS cnt
     FROM priority_list_delete
     GROUP BY category
   ) AS grouped_categories) AS del_category_counts;

针对SQL Server的版本

如果用SQL Server,它没有JSON_OBJECT_AGG,可以用字符串拼接的方式展示分组结果:

SELECT 
  (SELECT COUNT(*) FROM priority_list) + (SELECT COUNT(*) FROM priority_list_delete) AS tot_count,
  (SELECT COUNT(*) FROM priority_list) AS prior_cnt,
  (SELECT COUNT(*) FROM priority_list_delete) AS prior_del_cnt,
  (SELECT STRING_AGG(CONCAT(category, ':', cnt), ', ')
   FROM (
     SELECT category, COUNT(*) AS cnt
     FROM priority_list_delete
     GROUP BY category
   ) AS grouped_categories) AS del_category_counts;

说明

  • 前三个字段和你原来的查询完全一致,分别对应总记录数、两张表的单独计数。
  • 第四个字段del_category_counts会返回类似{"类别A":5, "类别B":3}(JSON版)或者类别A:5, 类别B:3(字符串版)的结果,把所有分组的计数打包在单行里。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:23:38