PostgreSQL ORDER BY子句/GROUP BY子句

114 阅读1分钟

ORDER BY子句用于按升序或降序对数据进行排序。数据在一列或多列的基础上进行排序

语法

SELECT column-list 
FROM table_name 
[WHERE condition]
[ORDER BY column1, column2, .. columnN] [ASC | DESC]; 

参数说明

  • column_list:它指定要检索的列或计算。

  • table_name:它指定要从中检索记录的表。FROM子句中必须至少有一个表。

  • WHERE conditions:可选。 它规定必须满足条件才能检索记录。

  • ASC:也是可选的。它通过表达式按升序排序结果集(默认,如果没有修饰符是提供者)。

  • DESC:也是可选的。 它通过表达式按顺序对结果集进行排序。

例子

升序

SELECT * FROM EMPLOYEES 
ORDER BY AGE ASC; 

降序

SELECT * FROM EMPLOYEES 
ORDER BY name DESC;

多列排序

 SELECT * FROM EMPLOYEES 
 ORDER BY AGE,NAME ASC; 

PostgreSQL GROUP BY子句用于将具有相同数据的表中的这些行分组在一起。 它与SELECT语句一起使用

GROUP BY子句通过多个记录收集数据,并将结果分组到一个或多个列。 它也用于减少输出中的冗余

语法

SELECT column-list FROM table_name 
WHERE [conditions ] 
GROUP BY column1, column2....columnN ORDER BY column1, column2....columnN

例子

选择姓名与工资,并根据姓名分组

SELECT NAME, SUM(SALARY) FROM EMPLOYEES 
GROUP BY NAME;

减少冗余

先插入几条冗余数据

INSERT INTO EMPLOYEES VALUES (6, '李洋', 24, '深圳市福田区中山路', 135000); 
INSERT INTO EMPLOYEES VALUES (7, 'Manisha', 19, 'Noida', 125000);
INSERT INTO EMPLOYEES VALUES (8, 'Larry', 45, 'Texas', 165000); 

NVIDIA_Share_dm5vWjRPCS.png

按名字统计薪水总额

SELECT NAME, SUM(SALARY) FROM EMPLOYEES 
GROUP BY NAME; 
重复记录被合并

NVIDIA_Share_lFplxxW4DU.png