欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > SQL看最多的数据,但想从小到大排列看趋势

SQL看最多的数据,但想从小到大排列看趋势

2025/5/15 22:54:12 来源:https://blog.csdn.net/Davina_yu/article/details/147956767  浏览:    关键词:SQL看最多的数据,但想从小到大排列看趋势

SQL 查询:从 test 表中获取本月的数据,并对数量最多的前10个流程按数量升序排序

假设表结构

  • test 表包含请求信息。
  • workflow_base 包含流程的基本信息。
CREATE TABLE test (requestid INT,          -- 请求IDworkflowid INT,         -- 流程IDcurrentnodetype CHAR(1),-- 当前节点类型createdate DATE,        -- 创建日期creater INT             -- 创建者ID
);

SQL 查询

-- 选择前10条记录并按数量升序排序
SELECT *
FROM (-- 选取数量最多的前10条记录SELECT TOP 10 *FROM (-- 子查询:计算每个流程的独特请求数量SELECT b.workflowname AS 流程,COUNT(DISTINCT a.requestid) AS 数量 FROM test a LEFT JOIN workflow_base b ON a.workflowid = b.idWHERE-- 筛选本月数据a.createdate >= DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), 1)AND a.createdate < DATEADD(MONTH, 1, DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), 1))GROUP BY b.workflowname) t1-- 按数量降序排列以选出前10条记录ORDER BY 数量 DESC
) t2
-- 对选出的前10条记录按数量升序排列展示
ORDER BY 数量 ASC;

解释

  • 子查询(t1):
    • 计算每个流程的独特请求数量。
    • 使用 LEFT JOIN 连接到 workflow_base 表来获取流程名称。
    • 使用 DATEFROMPARTS 和 DATEADD 函数筛选出本月的数据。
    • 按 b.workflowname 分组统计请求数量。
  • 中间查询(t2):
    • 从子查询结果中选取数量最多的前10条记录。
    • 使用 TOP 10 和 ORDER BY 数量 DESC 实现。
  • 最外层查询:
    • 对选出的前10条记录按数量升序排列展示。
    • 使用 ORDER BY 数量 ASC。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词