`

分组排序 还可以这样

阅读更多

要求查询每个用户对应的最大样品信息,忽然想到ms sql提供过 row_number() over(partition by 列 order by 列 desc),那么oracle可能也存在,

我的表结构如下:

复制代码
create table NEOGOODSRULE
(
  ID          NUMBER(22) not null,
  PERSONALID  NVARCHAR2(50),
  CT_SMP_TYPE NVARCHAR2(100)
)
tablespace VGSM
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
复制代码

数据如下:

复制代码
insert into neogoodsrule (ID, PERSONALID, CT_SMP_TYPE)
values (2270, 'JYZ', '原料');

insert into neogoodsrule (ID, PERSONALID, CT_SMP_TYPE)
values (2271, 'JYZ', '辅料');

insert into neogoodsrule (ID, PERSONALID, CT_SMP_TYPE)
values (2359, 'SYSTEM', '包材(内)');

insert into neogoodsrule (ID, PERSONALID, CT_SMP_TYPE)
values (2360, 'SYSTEM', '包材(外)');

insert into neogoodsrule (ID, PERSONALID, CT_SMP_TYPE)
values (2361, 'SYSTEM', '原料');

insert into neogoodsrule (ID, PERSONALID, CT_SMP_TYPE)
values (2362, 'SYSTEM', '成品');

insert into neogoodsrule (ID, PERSONALID, CT_SMP_TYPE)
values (2363, 'SYSTEM', '稳定性(加速)');

insert into neogoodsrule (ID, PERSONALID, CT_SMP_TYPE)
values (2364, 'SYSTEM', '稳定性(长期)');

insert into neogoodsrule (ID, PERSONALID, CT_SMP_TYPE)
values (2365, 'SYSTEM', '辅料');

insert into neogoodsrule (ID, PERSONALID, CT_SMP_TYPE)
values (2354, 'LY', '成品');

insert into neogoodsrule (ID, PERSONALID, CT_SMP_TYPE)
values (2355, 'LY', '原料');
复制代码

ROW_NUMBER()语法如下:

1、row_number() over(order by column asc)先对列column按照升序,再为每条记录返回一个序列号:

select personalid,row_number() over(order by personalid asc) rn from  neogoodsrule

2、row_number() over(partition by column1 order by column2 asc) 先按照column1分组,再对分组后的数据进行以column2升序排列

select personalid,ct_smp_type,row_number() over(partition by personalid order by ct_smp_type asc) rn from neogoodsrule 

 

由此,开始所提的需求sql代码如下

select * from (select personalid,ct_smp_type,row_number() over(partition by personalid order by ct_smp_type asc) rn from neogoodsrule )
where rn=1

 

 

 

 

出处:http://www.cnblogs.com/hfliyi/archive/2013/03/17/2964057.html

分享到:
评论

相关推荐

    SQL Server分组排序取数据的实现

    本文将深入探讨如何在SQL Server中实现分组排序并获取每组的特定行数据。 首先,我们要理解分组的概念。在SQL中,`GROUP BY`语句用于将数据根据一个或多个列进行分类,例如在示例代码中,我们根据`A.DocNo`, `A1....

    java 集合分组与排序

    在Java编程中,集合框架是核心部分,它提供了数据...同时,`ArrayHelp`和`ClassLoadUtil`这样的工具类可以帮助我们更方便地操作数组和管理类加载。在实际开发中,合理运用这些工具可以显著提高代码的效率和可维护性。

    城市列表(按照字母分组排序)

    在Android开发中,"城市列表(按照字母分组排序)"是一个常见的功能需求,它能够帮助用户更加方便快捷地找到所需的城市。这个功能通常应用于地图应用、天气应用或者是任何需要用户选择地理位置的软件。实现这样的...

    MySQL分组排序功能

    通过巧妙地利用MySQL的用户自定义变量,我们可以实现对数据的分组排序。这种方法虽然不如Oracle中的窗口函数那样直观,但仍然是非常实用且高效的解决方案。希望开发者们能够通过学习这个例子,进一步拓展自己的SQL...

    wpf--ListBox分组-排序

    总结来说,WPF的ListBox提供了强大的数据绑定和呈现能力,通过数据源的分组和排序功能,我们可以轻松地创建出具有高级特性的用户界面。在实际开发中,还需要注意数据绑定的性能优化,以及适当使用MVVM模式,使代码...

    Mysql利用group by分组排序

    首先先按某个字段进行order by,然后把有顺序的表进行分组,这样每组的成员都是有顺序的,而mysql默认取得分组的第一行。从而得到每组的最值。 select id, (@rowno := @rowno + 1) as rank, score, (C.end_ti

    Android ListView城市列表,按a-z分组字母索引排序

    分组则是将相同首字母的城市归为一类,这可以通过遍历排序后的城市列表,检查每个城市的首字母,并根据首字母创建对应的SectionHeader。 为了显示分组的字母索引,我们可以创建一个侧滑的字母栏(AlphabetIndexer)...

    详解MySQL分组排序求Top N

    总结来说,MySQL分组排序求Top N可以通过子查询或窗口函数实现,两者都有其适用场景。子查询方法简单直观,但效率可能较低,适用于数据量不大的情况;而窗口函数则提供了更高的性能,尤其在大数据集上。理解并掌握这...

    按拼音排序分组LIST

    另外,如果数据量过大,可以考虑使用数据库(如SQLite)进行存储和查询,这样可以利用数据库的排序功能,提高效率。 总的来说,“按拼音排序分组LIST”这个功能涉及了Android应用开发中的数据处理、UI设计、事件...

    PHP中数组的分组排序实例

    在这个实例中,我们将探讨如何在PHP中实现数组的分组排序,特别是按照特定规则进行排序的情况。以下是一个具体的例子,展示了如何对二维数组进行以A列为主、C列倒序的排序,同时保持B列数据的完整性。 首先,我们来...

    引入激活加权策略的分组排序学习方法.docx

    这样可以适应性地强调某些文档对排序的影响,特别是对于同类型文档的比较,同时减轻不同文档对单个样本的不必要影响。通过这种方式,W-GSF能够在保持良好排序性能的同时,降低计算成本。 实验结果证明,W-GSF相比于...

    javascript经典特效---jQuery实现动态图文分组排序切换源码.rar

    总结来说,通过学习和实践这个jQuery动态图文分组排序切换源码,你可以掌握如何利用jQuery选择器、动画效果以及事件处理来创建复杂的网页交互特效。这不仅加深了对jQuery的理解,也为你的前端开发技能添砖加瓦。

    listview图标,排序,分组

    通过分析和学习这个项目,开发者可以快速掌握ListView控件的使用技巧,包括图标显示、排序和分组。在实际开发中,结合具体的业务需求,我们可以灵活运用这些功能,创建出满足用户需求的高效且直观的用户界面。

    易语言分组插入排序.rar

    3. 这种分组策略可以有效减少大规模数据排序时的比较和交换次数,尤其是在数据已经部分有序的情况下,分组插入排序的效率较高。 4. 在易语言中实现分组插入排序,需要编写相应的函数或者过程,包括创建小组、在小组...

    java集合分组(Guava)

    例如,如果我们想计算每个分组的元素数量,可以这样做: ```java Map, Long> personCountByAge = people.stream() .collect(groupingBy(Person::getAge, counting())); // 这将创建一个Map,键是年龄,值是对应...

    好友列表排序,分组

    这个“好友列表排序,分组”的demo展示了如何实现这样的功能。首先,我们需要理解好友列表的核心数据结构,通常是一个包含多个联系人对象的数组,每个对象包含了姓名、电话、头像等信息。 1. **数据模型设计**: ...

    Python 对DataFrame数据分组并排序并选择最优数据

    通过这样的操作,我们可以有效地筛选和整理数据,为后续的分析或决策提供依据。 总的来说,Python的Pandas库提供了强大的数据操作功能,包括数据读取、清洗、转换、聚合等,而这些操作在数据科学、机器学习以及日常...

    分组并排序取前N

    标题“分组并排序取前N”涉及到数据库查询中的一个重要概念,这通常指的是在SQL查询中使用`GROUP BY`、`ORDER BY`以及`LIMIT`子句来对数据进行分组、排序,并提取出每组中排名靠前的N条记录。在数据库管理中,这种...

Global site tag (gtag.js) - Google Analytics