广告
返回顶部
首页 > 资讯 > 数据库 >排序,分组和集合操作
  • 384
分享到

排序,分组和集合操作

2024-04-02 19:04:59 384人浏览 薄情痞子
摘要

排序操作排序是计算机承担的最基本操作之一,尤其是在数据库处理领域,oracle也不例外。可能需要oracle排序数据的操作包括以下几种;(1)创建一个索引(2)通过group by,unique或disti

  1. 排序操作

    排序是计算机承担的最基本操作之一,尤其是在数据库处理领域,oracle也不例外。可能需要oracle排序数据的操作包括以下几种;

    (1)创建一个索引

(2)通过group by,unique或distinct关键字对数据进行分组或聚合

(3)因为使用order by子句使得数据按照排好的顺序返回

(4)使用排序合并方法联结表或结果集

(5)使用集合操作uNIOn,intersect或minus

(6)执行特定的子查询

查询可能需要可观的资源,具体说明如下:

CPU总是要消耗的。需要CPU的数量和需要排序的结果集大小成正比。

oracle分配一块内存用来排序。这块内存来自于程序全局区(PGA).可用的PGA内存总量通常取决于MEMORY_TARGET或PGA_AGGREGATE_TARGET的值

如果内存区域不足以完成排序,oracle会分配一个或多个临时段到临时表空间。这个叫作磁盘排序。磁盘排序会增加额外的开销,包括在临时段中分配空间和把数据写入临时表空间以及磁盘读出的io消耗。

1.1 最优,一次或多次排序

可供执行排序操作的内存量是决定排序性能的最重要的因数。如果供排序使用的内存量足以使排序在内存中完成,则性能将是最佳的,实际上oracle将这种类型的排序操作称为最优排序。

如果没有足够的内存,当执行排序操作时,oracle必须读写临时段。在一次排序中,orale仅需要写入(然后读回)一个短。在多次排序中,oracle需要写并读回多个排序段。需要的排序次数越多。排序中所包含的IO就越多,排序性能也就越差。

排序所需要的IO随着排序次数的增加而急剧增长,排序次数最终成为影响sql性能的主要因素。

1.2 衡量排序活动

现在让我们来看看如何能够衡量排序活动

优化器计算它认为将需要的内存量,并且你可以通过检查dbms_xplan输出的tempSpc字段看到这些(即使在你执行sql之前)

SQL> explain plan for select * from customers order by cust_last_name,cust_first_name,cust_year_of_birth;

Explained.

SQL> select * from table(dbms_xplan.display());

PLAN_TABLE_OUTPUT

---------------------------------------------------------------------------------------

Plan hash value: 2792773903

----------------------------------------------------------------------------------------

| Id  | Operation   | Name      | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |

----------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT   |       | 55500 |  9810K|       |  2609 (1)| 00:00:02 |

|   1 |  SORT ORDER BY   |       | 55500 |  9810K|    12M|  2609 (1)| 00:00:02 |

|   2 |   TABLE ACCESS FULL| CUSTOMERS | 55500 |  9810K|       |   405 (1)| 00:00:01 |

---------------------------------------------------------------------------------------

9 rows selected.

DBMS_XPLAN产生的值是一个估计值,但是它可以给你一个对于所需内存的大体感受。

V$SQL_WORKAREA视图包含于数据库中已发生的内存使用及排序行为的相关的详细统计信息。

WITH sql_workarea AS

 (SELECT sql_id || '-' || child_number sql_id_child,

         operation_type operation,

         last_execution last_exec,

         round(active_time / 1000000, 2) seconds,

         optimal_executions || '/' || onepass_executions || '/' ||

         multipasses_executions olm,

         substr(sql_text, 1, 155) sql_text,

         rank() over(ORDER BY active_time DESC) ranking

    FROM v$sql_workarea

    JOIN v$sql

   USING (sql_id, child_number))

SELECT sql_id_child "SQL_ID -CHILD",

       seconds,

       operation,

       last_exec,

       olm          "O/1/M",

       sql_text

  FROM sql_workarea

 WHERE ranking <= 3

 ORDER BY ranking;

1.3 跟踪排序活动

    SQL> oradebug event 10032 trace name context forever,level 12;  

---- Sort Parameters ------------------------------

sort_area_size                    12691456

sort_area_retained_size           12691456

sort_multiblock_read_count        1

max intermediate merge width      773

*** 2014-12-15 13:34:36.765

sorcls: sorp 0x7fd8df3ea1c8

---- Sort Statistics ------------------------------

Input records                             55500

Output records                            55500

Total number of comparisons perfORMed     656484

  Comparisons performed by in-memory sort 656484

Total amount of memory used               12691456

Uses version 2 sort

---- End of Sort Statistics -----------------------

1.4 使用索引规避排序

        如果再order by子句中的部分或全部列上存在索引,oracle有可能使用索引来按照要求的顺序获取记录,因此也避免了排序操作。

    假如索引是出现于order by子句里的列相同的列上,oracle可以直接从索引中按照索引排序的顺序读取记录。然而,按键的顺序读取记录需要一块接一块地全扫描索引叶子块。虽然快速全扫描比常规的全索引扫描高效得多,但是快速全扫描无法按索引顺序返回记录。因此也不能用来避免排序操作。

    

SQL> select * from customers order by cust_last_name,cust_first_name,cust_year_of_birth;

55500 rows selected.

Execution Plan

----------------------------------------------------------

Plan hash value: 2792773903

----------------------------------------------------------------------------------------

| Id  | Operation   | Name      | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |

----------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT   |       | 55500 |  9810K|       |  2609 (1)| 00:00:02 |

|   1 |  SORT ORDER BY   |       | 55500 |  9810K|    12M|  2609 (1)| 00:00:02 |

|   2 |   TABLE ACCESS FULL| CUSTOMERS | 55500 |  9810K|       |   405 (1)| 00:00:01 |

----------------------------------------------------------------------------------------

Statistics

----------------------------------------------------------

 1  recursive calls

 0  db block gets

       1456  consistent gets

       1454  physical reads

 0  redo size

    6366832  bytes sent via SQL*Net to client

      41213  bytes received via SQL*Net from client

       3701  SQL*Net roundtrips to/from client

 1  sorts (memory)

 0  sorts (disk)

      55500  rows processed

    然而,如果我们在order by的列上创建一个索引,并使用first_rows提示(或index提示),oracle将使用索引替代排序:

SQL> create index cust_member_i on customers(cust_last_name,cust_first_name,cust_year_of_birth);

Index created.

SQL> select * from customers order by cust_last_name,cust_first_name,cust_year_of_birth;

55500 rows selected.

Execution Plan

----------------------------------------------------------

Plan hash value: 3023887059

-------------------------------------------------------------------------------------------

| Id  | Operation    | Name    | Rows  | Bytes | Cost (%CPU)| Time     |

-------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT    |    | 55500 |  9810K| 20550   (1)| 00:00:15 |

|   1 |  TABLE ACCESS BY INDEX ROWID| CUSTOMERS     | 55500 |  9810K| 20550   (1)| 00:00:15 |

|   2 |   INDEX FULL SCAN    | CUST_MEMBER_I | 55500 |    | 225   (0)| 00:00:01 |

-------------------------------------------------------------------------------------------

Statistics

----------------------------------------------------------

 1  recursive calls

 0  db block gets

      26557  consistent gets

       1701  physical reads

 0  redo size

   11063057  bytes sent via SQL*Net to client

      41213  bytes received via SQL*Net from client

       3701  SQL*Net roundtrips to/from client

 0  sorts (memory)

 0  sorts (disk)

      55500  rows processed

虽然使用索引就不再需要排序了,但是同时读取索引和表块,已经按块顺次读取这种并不高效的扫描方式所带来的开销,比仅使用全表扫描读取表块的方式要欠佳很多。通常,这意味着了为了避免排序而使用索引,实际上会到导致更差的性能。然而,使用索引的再检索第一行记录时速度更快。因为一旦需要的记录被检索到,它就立即返回。相比之下排序的方法要求再任一记录返回之前,全部记录都必须被检索并完成排序。因此,在优化器目标为first_rows_n时,优化器倾向于使用索引,而在目标是all_rows时,则会使用全表扫描。

    2 分组与聚合

    聚合(aggregate)操作基于多行记录返回数据,平均,求和,最大和最小值等。分组(grouping)操作允许我们对共享相同的group by值的记录集返回它的集合。

    2.1 聚合操作

    聚合操作(sum和average)必须处理输入数据的每一行记录。因此,它们通常和全表扫描联系在一起:

SQL> select sum(quantity_sold) from sales;

Execution Plan

----------------------------------------------------------

Plan hash value: 3519235612

-------------------------------------------------------------------------------------------

| Id  | Operation     | Name  | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |

----------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT     |     |   1 |   3 | 525   (2)| 00:00:01 |     |     |

|   1 |  SORT AGGREGATE      |     |   1 |   3 |  |     |     |     |

|   2 |   PARTITION RANGE ALL|     | 918K| 2691K| 525   (2)| 00:00:01 |   1 |  28 |

|   3 |    TABLE ACCESS FULL | SALES | 918K| 2691K| 525   (2)| 00:00:01 |   1 |  28 |

-------------------------------------------------------------------------------------------

如果被聚合上的列存在索引,对于这个索引的快速全扫描通常会更高效:

    2.2 最大值和最小值

与大多数其他聚合操作不同,如果在相关列上存在索引,max和min操作并不需要读取每一行记录。如果存在B树索引,我们可以通过检查第一个或最后一个索引项来确定最大值或最小值,这仅需要3-5个逻辑读的开销

SQL> select max(amount_sold) from sales;(没有索引)

Execution Plan

----------------------------------------------------------

Plan hash value: 3519235612

-------------------------------------------------------------------------------------------

| Id  | Operation     | Name  | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |

----------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT     |     |   1 |   5 | 525   (2)| 00:00:01 |     |     |

|   1 |  SORT AGGREGATE      |     |   1 |   5 |  |     |     |     |

|   2 |   PARTITION RANGE ALL|     | 918K| 4486K| 525   (2)| 00:00:01 |   1 |  28 |

|   3 |    TABLE ACCESS FULL | SALES | 918K| 4486K| 525   (2)| 00:00:01 |   1 |  28 |

-------------------------------------------------------------------------------------------

Statistics

----------------------------------------------------------

 0  recursive calls

 0  db block gets

       1635  consistent gets

       1619  physical reads

 0  redo size

536  bytes sent via SQL*Net to client

524  bytes received via SQL*Net from client

 2  SQL*Net roundtrips to/from client

 0  sorts (memory)

 0  sorts (disk)

 1  rows processed

有索引的情况:

SQL> select max(amount_sold) from sales;

Execution Plan

----------------------------------------------------------

Plan hash value: 781264156

-------------------------------------------------------------------------------------------

| Id  | Operation   | Name     | Rows  | Bytes | Cost (%CPU)| Time     |

-------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT   |     |   1 |   5 |   3   (0)| 00:00:01 |

|   1 |  SORT AGGREGATE   |     |   1 |   5 |  |     |

|   2 |   INDEX FULL SCAN (MIN/MAX)| AMOUNT_SOLD_IDX |   1 |   5 |   3   (0)| 00:00:01 |

------------------------------------------------------------------------------------------

Statistics

----------------------------------------------------------

 1  recursive calls

 0  db block gets

 3  consistent gets

 2  physical reads

 0  redo size

536  bytes sent via SQL*Net to client

524  bytes received via SQL*Net from client

 2  SQL*Net roundtrips to/from client

 0  sorts (memory)

 0  sorts (disk)

 1  rows processed

然而,如果我们要同时查找最大值和最小值,oracle需要花费很多的逻辑读,此时全扫描索引代价会更高,oracle选择全表扫描。

SQL> select max(amount_sold),min(amount_sold) from sales;

Execution Plan

----------------------------------------------------------

Plan hash value: 3519235612

-------------------------------------------------------------------------------------------

| Id  | Operation     | Name  | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |

----------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT     |     |   1 |   5 | 525   (2)| 00:00:01 |      |     |

|   1 |  SORT AGGREGATE      |     |   1 |   5 |  |     |      |     |

|   2 |   PARTITION RANGE ALL|     | 918K| 4486K| 525   (2)| 00:00:01 |    1 |  28 |

|   3 |    TABLE ACCESS FULL | SALES | 918K| 4486K| 525   (2)| 00:00:01 |    1 |  28 |

-------------------------------------------------------------------------------------------

Statistics

----------------------------------------------------------

 1  recursive calls

 0  db block gets

       1635  consistent gets

       1619  physical reads

 0  redo size

618  bytes sent via SQL*Net to client

524  bytes received via SQL*Net from client

 2  SQL*Net roundtrips to/from client

 0  sorts (memory)

 0  sorts (disk)

 1  rows processed

实际上分别提交MAX和MIN查询然后将结果合并到一起是一种更好的办法:

SQL> select max_sold,min_sold from(select max(amount_sold)max_sold from sales)maxt,(select min(amount_sold) min_sold from sales)mint;

Execution Plan

----------------------------------------------------------

Plan hash value: 3650580342

-------------------------------------------------------------------------------------------

| Id  | Operation     | Name       | Rows  | Bytes | Cost (%CPU)| Time     |

-------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT     |       |     1 |    26 |     6 (0)| 00:00:01 |

|   1 |  NESTED LOOPS     |       |     1 |    26 |     6 (0)| 00:00:01 |

|   2 |   VIEW     |       |     1 |    13 |     3 (0)| 00:00:01 |

|   3 |    SORT AGGREGATE     |       |     1 |     5 |    |       |

|   4 |     INDEX FULL SCAN (MIN/MAX)| AMOUNT_SOLD_IDX |     1 |     5 |     3 (0)| 00:00:01 |

|   5 |   VIEW     |       |     1 |    13 |     3 (0)| 00:00:01 |

|   6 |    SORT AGGREGATE     |       |     1 |     5 |    |       |

|   7 |     INDEX FULL SCAN (MIN/MAX)| AMOUNT_SOLD_IDX |     1 |     5 |     3 (0)| 00:00:01 |

-------------------------------------------------------------------------------------------

Statistics

----------------------------------------------------------

 0  recursive calls

 0  db block gets

 6  consistent gets

 0  physical reads

 0  redo size

602  bytes sent via SQL*Net to client

524  bytes received via SQL*Net from client

 2  SQL*Net roundtrips to/from client

 0  sorts (memory)

 0  sorts (disk)

 1  rows processed

2.3 "前N"查询

    在sales表中按美元计销量最好的前10种商品,以下查询肯定是不对的:

SQL> select * from sales where rownum<=10 order by amount_sold desc;

   PROD_ID    CUST_ID TIME_ID CHANNEL_ID   PROMO_ID QUANTITY_SOLD AMOUNT_SOLD

---------- ---------- --------- ---------- ---------- ------------- -----------

13  987 10-JAN-98 3  999  1 1232.16

13 1660 10-JAN-98 3  999  1 1232.16

13 1762 10-JAN-98 3  999  1 1232.16

13 1843 10-JAN-98 3  999  1 1232.16

13 4663 10-JAN-98 3  999  1 1232.16

13 2273 10-JAN-98 3  999  1 1232.16

13 2380 10-JAN-98 3  999  1 1232.16

13 2683 10-JAN-98 3  999  1 1232.16

13 2865 10-JAN-98 3  999  1 1232.16

13 1948 10-JAN-98 3  999  1 1232.16

10 rows selected.

    这是因为对where的处理会先于order by,因此这个查询将获取它最先发现的的10条记录,然后对它们进行排序。这样的结果不是真正的前10.

    下面的查询更合理:

SQL> select * from(select cust_id,prod_id,time_id,amount_sold from sales order by amount_sold desc) where rownum<=10;

   CUST_ID    PROD_ID TIME_ID AMOUNT_SOLD

---------- ---------- --------- -----------

      3948   18 26-APR-99     1782.72

      4150   18 26-JUN-99     1782.72

40   18 26-JUN-99     1782.72

     33724   18 21-JUN-99     1782.72

     32863   18 21-JUN-99     1782.72

     31364   18 21-JUN-99     1782.72

     10864   18 21-JUN-99     1782.72

     10620   18 21-JUN-99     1782.72

      6490   18 21-JUN-99     1782.72

      4788   18 21-JUN-99     1782.72

Execution Plan

----------------------------------------------------------

Plan hash value: 443584055

-------------------------------------------------------------------------------------------

| Id  | Operation     | Name       | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |

-------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT     |       |    10 |   480 |     4 (0)| 00:00:01 |       |       |

|*  1 |  COUNT STOPKEY     |       |       |       |    |       |       |       |

|   2 |   VIEW     |       |    10 |   480 |     4 (0)| 00:00:01 |       |       |

|   3 |    TABLE ACCESS BY GLOBAL INDEX ROWID| SALES       |   918K|    19M|     4 (0)| 00:00:01 | ROWID | ROWID |

|   4 |     INDEX FULL SCAN DESCENDING     | AMOUNT_SOLD_IDX |    10 |       |     3 (0)| 00:00:01 |       |       |

-------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

   1 - filter(ROWNUM<=10)

Statistics

----------------------------------------------------------

 0  recursive calls

 0  db block gets

 6  consistent gets

 0  physical reads

 0  redo size

908  bytes sent via SQL*Net to client

524  bytes received via SQL*Net from client

 2  SQL*Net roundtrips to/from client

 0  sorts (memory)

 0  sorts (disk)

10  rows processed

STOPKEY表示不用将排序的结果全部返回。

使用分析函数:

SQL> set lines 200

SELECT

 *

  FROM (SELECT cust_id,

               prod_id,

               time_id,

               amount_sold,

               dense_rank() over(ORDER BY amount_sold DESC) ranking

          FROM sales)

  9   WHERE ranking <= 10;

1355 rows selected.

Execution Plan

----------------------------------------------------------

Plan hash value: 2275521554

-------------------------------------------------------------------------------------------

| Id  | Operation | Name  | Rows  | Bytes |TempSpc| Cost (%CPU)| Time | Pstart| Pstop |

-------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT | |   918K|    53M| |  6623   (1)| 00:00:05 | | |

|*  1 |  VIEW | |   918K|    53M| |  6623   (1)| 00:00:05 | | |

|*  2 |   WINDOW SORT PUSHED RANK| |   918K|    19M|    31M|  6623   (1)| 00:00:05 | | |

|   3 |    PARTITION RANGE ALL | |   918K|    19M| |   525   (2)| 00:00:01 |     1 |    28 |

|   4 |     TABLE ACCESS FULL | SALES |   918K|    19M| |   525   (2)| 00:00:01 |     1 |    28 |

-------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

   1 - filter("RANKING"<=10)

   2 - filter(DENSE_RANK() OVER ( ORDER BY INTERNAL_FUNCTION("AMOUNT_SOLD") DESC )<=10)

Statistics

----------------------------------------------------------

 0  recursive calls

 0  db block gets

       1635  consistent gets

       1619  physical reads

 0  redo size

      31018  bytes sent via SQL*Net to client

       1513  bytes received via SQL*Net from client

92  SQL*Net roundtrips to/from client

 1  sorts (memory)

 0  sorts (disk)

       1355  rows processed

尽管我对于子查询得到前10的方法有所保留,但是它更高效。dense_rank方法比排序的子查询方法消耗更多的内存和CPU。

2.4 分组操作

    分组(group by)操作允许sql语句对一批列中的每个唯一值返回一行记录,并且对每个一个这样的组计算聚合。例如,下面的语句对每一个国家代码返回平均信用限额:

SQL> select country_id,avg(cust_credit_limit) from customers group by country_id;

19 rows selected.

Execution Plan

----------------------------------------------------------

Plan hash value: 1577413243

--------------------------------------------------------------------------------

| Id  | Operation   | Name      | Rows  | Bytes | Cost (%CPU)| Time     |

--------------------------------------------------------------------------------

|   0 | SELECT STATEMENT   |       |    19 |   171 |   407 (1)| 00:00:01 |

|   1 |  HASH GROUP BY   |       |    19 |   171 |   407 (1)| 00:00:01 |

|   2 |   TABLE ACCESS FULL| CUSTOMERS | 55500 |   487K|   405 (1)| 00:00:01 |

--------------------------------------------------------------------------------


您可能感兴趣的文档:

--结束END--

本文标题: 排序,分组和集合操作

本文链接: https://www.lsjlt.com/news/39229.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 排序,分组和集合操作
    排序操作排序是计算机承担的最基本操作之一,尤其是在数据库处理领域,oracle也不例外。可能需要oracle排序数据的操作包括以下几种;(1)创建一个索引(2)通过group by,unique或disti...
    99+
    2022-10-18
  • SQL 聚合、分组和排序
    目录一、聚合查询1、COUNT 函数2、SUM 函数3、AVG 函数4、MAX 函数和 MIN 函数二、分组查询三、对聚合结果进行过滤1、HAVING 子句的构成要素四、对查...
    99+
    2022-11-12
  • 怎么掌握SQL聚合、分组和排序
    这篇文章主要介绍“怎么掌握SQL聚合、分组和排序”,在日常操作中,相信很多人在怎么掌握SQL聚合、分组和排序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么掌握SQL聚合、分组和排序”的疑惑有所帮助!接下来...
    99+
    2023-06-25
  • Java集合框架和数组的排序是什么
    这篇文章将为大家详细讲解有关Java集合框架和数组的排序是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。根据约定,在使用java编程的时候应尽可能的使用现有的类库,当然你也可以自己编写一...
    99+
    2023-06-17
  • 【Java】数组操作 之 数组排序
    对数组进行排序是程序中非常基本的需求。常用的排序算法有冒泡排序、插入排序和快速排序等。 一、冒泡排序 我们来看一下如何使用冒泡排序算法对一个整型数组从小到大进行排序: // 冒泡排序import ja...
    99+
    2023-10-04
    java 排序算法 算法
  • Redis数据操作--有序集合
    | Redis 的集合以无序的方式储存多个各不相同的元素 # 用户可以快速地向集合添加元素,或者从集合里面删除元素,也可以对多个集合 进行集合运算操作,比如计算并集,交集和差集...
    99+
    2022-10-18
  • Redis数据操作--无序集合
    | 有序集合和集合一样,都可以包含任意数量的,各不相同的元素,不同于集合 的是,有序集合的每个元素都关联着一个浮点数分值,并且有序集合会按照 分值,以从小到大的顺序来排列有序集合中的各个元素。 &...
    99+
    2022-10-18
  • pandas组内排序,并在每个分组内按序打上序号的操作
    问题: pandas组内排序,并在每个分组内按序打上序号 描述: pandas dataframe 对dep_id组内的salary排序。希望给下面原本只有前三列的dataframe...
    99+
    2022-11-11
  • 如何利用索引提升PHP与MySQL的排序和分组操作?
    索引是一种在数据库表中创建的数据结构,用来提高查询操作的效率。在PHP和MySQL中,索引可以在排序和分组操作中发挥重要作用,提升数据库查询的性能。本文将介绍如何利用索引来优化PHP与MySQL的排序和分组操作,并提供具体的代码示例。排序操...
    99+
    2023-10-21
    索引(Index) 排序(Sort) 分组(Group)
  • pandas组内排序并在每个分组内按序打上序号的操作示例
    这篇文章给大家分享的是有关pandas组内排序并在每个分组内按序打上序号的操作示例的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。问题:pandas组内排序,并在每个分组内按序打上序号描述:pandas dataf...
    99+
    2023-06-14
  • Python 元组和集合的特点及常用操作
    一、元组的特点:1、有序的集合2、通过偏移来取数据3、属于不可变的对象,不能在原地修改内容,没有排序,修改等操作。tuple支持的方法很少>>> dir(tuple) ['__add__', '__class__', '_...
    99+
    2023-01-31
    常用 操作 Python
  • Java 集合操作之交集、并集和差集
    在 Java 编程中,经常需要对集合进行一些操作,比如取两个集合的交集、并集和差集。本文将介绍如何使用 Java 集合框架中的方法来实现这些集合操作,并通过源码解析来深入了解其实现原理。 先上代码...
    99+
    2023-09-01
    java 开发语言
  • Elasticsearch聚合查询及排序操作示例
    目录1 es排序2 match和match的区别3 分页查询4 es 组合查询5 结果过滤展示字端6 结果高亮展示7 聚合查询avg、max、min、sum、分组8 mapping和...
    99+
    2022-11-13
  • PythonNumpy中数组的集合操作详解
    我们知道两个 set 对象之间,可以取交集、并集、差集、对称差集,举个例子: s1 = {1, 2, 3} s2 = {2, 3, 4} """ &: 交集 |: 并集  ...
    99+
    2022-11-11
  • Java中数组的常见操作合集
    目录数组的常见操作数组越界异常数组空指针异常数组遍历数组获取最大值元素数组反转数组作为方法参数和返回值数组作为方法参数数组作为方法返回值数组的常见操作 数组越界异常 public s...
    99+
    2022-11-13
  • shell中的数组操作小结和冒泡排序实现脚本分享
    shell数组介绍: //数组变量定义: $ arr=(1 3 6 8 2 5 9 0 7 4) // 默认获取第一个元素 $ echo $arr // 通过下标访问,下面取的数组第二个元素,s...
    99+
    2022-06-04
    数组 小结 脚本
  • MySQL单表查询操作实例详解【语法、约束、分组、聚合、过滤、排序等】
    本文实例讲述了MySQL单表查询操作。分享给大家供大家参考,具体如下: 语法 一、单表查询的语法    SELECT 字段1,字段2... FROM 表名  &nbs...
    99+
    2022-10-18
  • SpringBoot集成Jpa对数据进行排序、分页、条件查询和过滤操作
    目录1、排序查询2、分页查询3、条件查询之前介绍了SpringBoot集成Jpa的简单使用,接下来介绍一下使用Jpa连接数据库对数据进行排序、分页、条件查询和过滤操作。首先创建Spr...
    99+
    2023-05-20
    SpringBoot集成Jpa SpringBoot集成Jpa排序分页查询
  • PostgreSQL聚合函数的分组排序使用示例
    目录聚合函数COUNTSUM、AVGMAX、MIN聚合函数+DISTINCTGROUP BYHAVINGORDER BY聚合函数 用于汇总的函数。 COUNT COUNT,计...
    99+
    2022-11-13
  • PostgreSQL聚合函数的分组排序怎么使用
    本篇内容介绍了“PostgreSQL聚合函数的分组排序怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!聚合函数用于汇总的函数。COUN...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作