`
cuishen
  • 浏览: 296931 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Teradata SQL用法之排名和分页

SQL 
阅读更多
1. 选取排序后的前N条记录
select top 3 e_name from ptemp.cuishen_temp_20100707
order by id

select top 3 * from ptemp.cuishen_temp_20100707
order by id


2. 用rank给记录排名

默认是降序排名
select rank(e_name), id, e_name from ptemp.cuishen_temp_20100707_2
qualify rank(e_name) <> 2


也可以指定asc关键字进行升序排名
select rank(e_name asc), id, e_name from ptemp.cuishen_temp_20100707_2
qualify rank(e_name asc) <= 2


其中
qualify rank(e_name asc) <= 2

子句表示对结果集进行限制,选取e_name字段升序排名前2的记录

限定条件当然也可以这样写:
select rank(name asc), id, name from ptemp.cuishen_temp_20100707
qualify rank(name asc) >= 2 and rank(name asc) <= 5


3. 分页查询

可以用row_number关键字来进行分页查询,例如:
select * from ptemp.cuishen_temp_20100707
qualify row_number() over(order by id) >= 2 and row_number() over(order by id) <= 5


4. row_number和rank的区别

row_number:顾名思意,就是行号,不管记录相不相同,行号都是不同的。
rank:对于不同的记录排名当然是不同的,而对于相同的记录排名是相同的,这就是为什么分页查询不用rank来做的原因。

5. 可以用PARTITION BY关键字进行去重排名查询
select * from ptemp.cuishen_temp_20100707
QUALIFY ROW_NUMBER() OVER(PARTITION BY id ORDER BY id) = 1

上句表示:按id字段排序,取每段重复id记录的TOP 1。千万注意:这个不能用rank来做。
分享到:
评论
3 楼 cuishen 2010-07-27  
icefishc 写道
用qualify 来分页效率怎么样?

关于网友的这个疑问,我今天特地测试了一把:

测试平台: 3节点TD, 75个AMPs
测试时间: 早上跑ETL中,TD繁忙时段

测试结果:

40万的数据量: 按索引字段排序分页耗时大概是1秒以内
40万的数据量: 按非索引字段排序分页耗时大概是1秒以内

600万的数据量: 按索引字段排序分页耗时大概是7秒
600万的数据量: 按非索引字段排序分页耗时大概是40秒

2千万的数据量: 按索引字段排序分页耗时大概是1分30秒
2千万的数据量: 按非索引字段排序分页耗时大概是2分48秒

由于相同字段不同时间跑,不同的字段,字段大小、类型不同,对测试结果都是有影响的,所以以上测试结果只是一个大概的参考值。

但是可以确定的是:这种qualify分页方式,尽管是能实现功能,但是在处理百万级以上的数据量时效率还是比较低下的,只适用于十万级以下的数据量。
2 楼 icefishc 2010-07-26  
用qualify 来分页效率怎么样?
1 楼 yongdi2 2010-07-26  
国内还是很少有人能接触到这个产品的,曲高和寡

相关推荐

    TERADATA、ORACLE数据库分页

    本篇将深入探讨TERADATA和ORACLE这两种广泛应用的关系型数据库在实现分页查询时的方法。 TERADATA是一个并行数据库系统,以其高效的大数据处理能力著称。在TERADATA中,进行分页查询主要通过使用`TOP`或`LIMIT`...

    Teradata SQL 基础教程

    - 包括日期计算和日期相关的函数使用方法。 #### 简单的宏 - 介绍了如何定义、执行、删除宏以及如何显示和改变宏的内容。 #### 子查询 1. **基本子查询** - 单行比较子查询。 - 多行比较子查询。 2. **复杂...

    Teradata-SQL.rar_teradata_teradata sql

    6. **SQL聚合函数**:如SUM、AVG、MAX、MIN和COUNT等,Teradata提供了高效的计算方法。 7. **视图(View)**:创建虚拟表,简化复杂的查询逻辑,提供数据安全性。 8. **索引(Index)**:Teradata支持B树索引、...

    Teradata SQL Advanced

    1. **目的与功能**:通过本模块的学习,你应该能够理解会话设置标志的目的和作用,并识别Teradata与ANSI在事务模式上的差异,以及如何使用可用的帮助函数。 2. **Teradata SQL成为“ANSI标准”语言**:为了符合ANSI...

    Teradata SQL Reference Fundamentals

    Teradata® RDBMS SQL Reference - Volume 1 Fundamentals

    Teradata sql 说明书

    本文将深入探讨Teradata SQL的基础知识和各种函数的详细用法。 一、Teradata SQL基础知识 1. 数据库对象:Teradata SQL支持多种数据库对象,包括表、视图、索引、存储过程、触发器等。这些对象是构建和管理数据库...

    NCR_teradata_SQL执行分析

    - 使用Teradata提供的工具和技术进行调优。 #### 四、SQL执行分析案例 以下是一个具体的SQL执行分析案例,展示了如何通过分析SQL语句的执行计划来优化性能: - **案例背景**:假设有一个大型销售数据表,需要...

    BI ETL informatica Teradata SQLLoader 数据仓库

    BI之ETL基本概念整理.doc Oracle 11g Sql Loader.doc SQLLoader.doc BI study plan—draft.doc Common+Warehouse+Metamodel(CWM)Specification.pdf Informatic PowerCenter7基础培训.pdf Informatica Install.doc ...

    Teradata SQL的基础教程

    在CMP出版集团旗下《智能企业》杂志 (Intelligent Enterprise) 的编辑推荐奖 (Editors’ Choice Awards)中,Teradata被评为2008年值得关注的全球最具影响力的前十二大杰出企业之一。此外,Teradata还名列Food ...

    Teradata SQL Reference Statement and Transaction Processing

    Teradata SQL参考手册第二卷详细介绍了各种SQL语句的使用方法,包括但不限于数据定义语言(DDL)、数据操作语言(DML)以及事务控制语句等。通过对这些语句的学习,用户可以有效地管理和操作Teradata数据库中的数据...

    Teradata_SQL_编写规范

    Teradata SQL 编写规范旨在统一软件开发过程中SQL编码的格式,确保代码遵循一致的风格,提升代码的可读性和维护性。这份规范特别适用于Teradata数据仓库系统,对从事该系统的代码开发、测试和检查人员具有指导意义。...

    teradata sql学习

    Teradata是全球领先的大型数据仓库解决方案之一,它专门设计用于处理海量数据,支持复杂分析和事务处理。SQL(结构化查询语言)是与Teradata交互的主要工具,对于数据管理和分析至关重要。 在"Teradata SQL语句大全...

    Teradata_SQL基础教程.pdf

    4. **多表内连接、自连接、子查询与表连接**:内连接的多样化使用方法。 #### 数据定义 创建、修改、删除数据库表和索引,包括字段定义、表级约束定义等。 #### 数据操作 包括插入(INSERT)、更新(UPDATE)、...

    Teradata SQL Functions, Operators, Expressions, and Predicates

    由于提供的文件内容包含了大量版权和商标声明,并没有提供实际的Teradata SQL Functions, Operators, Expressions和Predicates的相关知识内容,因此无法直接从文件内容中生成具体的知识点。不过,我可以根据文件的...

    Teradata SQL 教程宝典

    以上是对《Teradata SQL 教程宝典》中各章节内容的概括性总结,旨在帮助读者快速了解 Teradata SQL 的基础知识和技术要点。通过对这些知识点的学习,读者可以更好地掌握 Teradata 数据库的操作和管理技巧。

Global site tag (gtag.js) - Google Analytics