zoukankan      html  css  js  c++  java
  • postgresql之distinct用法

    1. 去重;关键字distinct去重功能  在其他数据库(oracle,mysql)是存在;当然postgresql也有这个功能

    [postgres@sdserver40_210 ~]$ psql mydb lottu
    psql (9.5.0)
    Type "help" for help.
    
    mydb=> select * from trade;
     tradeno | accountid  | fee | game_id 
    ---------+------------+-----+---------
     1000006 | yyb_100001 |  10 |    2555
     1000011 | yyb_100002 | 100 |    2555
     1001859 | yyb_100001 |  10 |    2555
     1001861 | yyb_100003 |  20 |    2555
     1001854 | yyb_100004 |   6 |    2555
     1001881 | yyb_100002 | 328 |    2555
    (6 rows)
    
    mydb=> select distinct accountid from trade;
     accountid  
    ------------
     yyb_100001
     yyb_100004
     yyb_100002
     yyb_100003
    (4 rows)
    
    mydb=> select distinct accountid,game_id from trade;
     accountid  | game_id 
    ------------+---------
     yyb_100001 |    2555
     yyb_100003 |    2555
     yyb_100004 |    2555
     yyb_100002 |    2555
    (4 rows)
    2. 跟on一起用; 使用DISTINCT ON实现用窗口函数实现的取第一名的功能
        这个功能oracle,mysql是没有的;当然它们有其他的分析函数可以替换;顶替;例如row_number, fisrt_values等等
    mydb=> select distinct on (accountid) accountid,fee from trade;
     accountid  | fee 
    ------------+-----
     yyb_100001 |  10
     yyb_100002 | 100
     yyb_100003 |  20
     yyb_100004 |   6
    (4 rows)
    
    mydb=> select distinct on (game_id) accountid,fee from trade;
     accountid  | fee 
    ------------+-----
     yyb_100001 |  10
    (1 row)
    
    mydb=> select distinct on (game_id) accountid,fee from trade order by game_id, fee desc;
     accountid  | fee 
    ------------+-----
     yyb_100002 | 328
    (1 row)
    
    --例如取每个帐号充值最大的一笔
    mydb=> select distinct on (accountid) accountid,fee from trade order by accountid, fee desc;
     accountid  | fee 
    ------------+-----
     yyb_100001 |  10
     yyb_100002 | 328
     yyb_100003 |  20
     yyb_100004 |   6
    (4 rows)
  • 相关阅读:
    MySQL5.6 community从下载到安装
    SVN使用
    VIsualSVN server 安装及旧仓库导入
    在VisualSVN创建新的Repository
    MFC用PostMessage传递消息
    Postgresql命令行和数据库备份与恢复
    makefile复习时发现的编写makefile规则注意事项
    js IDE WebStorm 注册码
    mysql学习笔记之基础篇
    c++继承详解
  • 原文地址:https://www.cnblogs.com/lottu/p/5553588.html
Copyright © 2011-2022 走看看