用SQL完成多记录乱序查找最大值

来源:互联网 发布:python webui 编辑:程序博客网 时间:2024/06/06 17:14

今天对过去一前辈写的项目进行查询优化,要对一个子查询进行优化,感觉效率提升了不少!在此记录。场景如下:

表字段:NAME    DATE      STATUS

因此表的数据是多线程插入的,所以会出现NAME的乱序,即是:若三种NAME为a,b,c,则表的存储可能会像如下序列:

a  a   a  c   c    b   c   a   c   c   b   b  ...但是其中又包含各类NAME集合的DATE列,要找到满足DATE 在 当前时间和当前时间-10分钟间最大的DATE,并且对应此列的STATUS字段是1时的记录总数。


描述为:

∀x ∈ S,S={x| x.date<time()∧ x.date>time()-10min ∧ x.STATUS=1}

(呃,描述好费劲啊!)

最后使用了GROUP子句,将NAME字段分组:

SELECT      <span style="color:red;">DISTINCT COUNT(MAX(DATE)) OVER() AS ROW</span>        FROM TB        WHERE DATE BETWEEN DATEADD(MM,-10,GETDATE())         AND GETDATE()             GROUP BY NAME
这样就查找出了所有的NAME种类中DATE在范围内的最大值记录数。

    

0 0
原创粉丝点击