SQL GROUP BY
SQL分组依据 在SQL中,Group By语句用于将相似的数据组织成组。数据在等效函数的帮助下进一步组织。这…
SQL分组依据
在SQL中,Group By语句用于将相似的数据组织成组。数据在等效函数的帮助下进一步组织。这意味着,如果精确列中的不同行具有相同的值,则会将这些行排列在一组中。
- SELECT语句与SQL查询中的GROUP BY子句一起使用。
- WHERE子句在SQL中的GROUP BY子句之前。
- 在SQL中,将ORDER BY子句放置在GROUP BY子句之后。
句法:
SELECT column1, function_name(column2)
FROM table_name
WHERE condition
GROUP BY column1, column2
ORDER BY column1, column2;
function_name: Table name.
Condition: which we used.
样品表:
雇员
雇员
S.no | Name | AGE | Salary |
---|---|---|---|
1 | John | 24 | 25000 |
2 | Nick | 22 | 22000 |
3 | Amara | 25 | 15000 |
4 | Nick | 22 | 22000 |
5 | John | 24 | 25000 |
学生
SUBJECT | YEAR | NAME |
---|---|---|
C language | 2 | John |
C language | 2 | Ginny |
C language | 2 | Jasmeen |
C language | 3 | Nick |
C language | 3 | Amara |
Java | 1 | Sifa |
Java | 1 | dolly |
例:
单个列分组:单个列分组用于放置所有具有相同值的行。这些值是一组中指定列的值。它表示所有行将在同一列中放置相等的数量,该列属于一组中的适当列。
考虑以下查询:
SELECT NAME, SUM (SALARY) FROM Employee GROUP BY NAME;
查询的输出是:
NAME | SALARY |
---|---|
John | 50000 |
Nick | 44000 |
Amara | 15000 |
在输出中,将包含重复名称的行分组在相似的名称下,并且它们对应的SALARY是重复行的SALARY之和。
- 基于多个列的分组:一些列的分组是GROUP BY列1 , column2等。在这里,我们将所有行都放在具有第1列和第2列相似值的组中。
考虑以下查询:
SELECT SUBJECT, YEAR, Count (*) FROM Student Group BY SUBJECT, YEAR;
输出:
SUBJECT | YEAR | Count |
---|---|---|
C language | 2 | 3 |
C language | 3 | 2 |
Java | 1 | 2 |
在上面的输出中,SUBJECT和YEAR相似的学生被分组在同一位置。仅有共同点的学生属于不同的群体。例如,如果名称相同而年份不同。
现在,我们必须根据多于一列或两列对表进行分组。
有条款
WHERE子句用于确定目的。它用于在列上放置条件,以确定组的最后结果集的一部分。在这里,我们不需要将组合函数(如COUNT(),SUM()等)与WHERE子句一起使用。之后,我们需要使用HAVING子句。
具有子句语法:
SELECT column1, function_name(column2)
FROM table_name
WHERE condition
GROUP BY column1, column2
HAVING condition
ORDER BY column1, column2;
function_name: Mainly used for name of the function, SUM(), AVG().
table_name: Used for name of the table.
condition: Condition used.
例:
SELECT NAME, SUM(SALARY) FROM Employee
GROUP BY NAME
HAVING SUM(SALARY)>23000;
SELECT NAME, SUM(SALARY) FROM Employee GROUP BY NAME HAVING SUM(SALARY)>23000;
输出:
Name | SUM(SALARY) |
---|---|
John | 50000 |
根据上面的输出,由于数据库中只有一个薪水总和大于50000的数据,因此NAME列中仅列出了一个名称。
应该将其放在组上,而不是在列上。
要点:
-
GROUP BY子句用于对具有相同值的行进行分组。
- SQL中的SELECT语句与GROUP BY子句一起使用。
- 在Group BY子句中,SELECT语句可以使用常量,聚合函数,表达式和列名。
- 使用HAVING子句减少结果时,将调用GROUP BY子句。
类别:MySQL、
本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。
还没有任何评论,赶紧来占个楼吧!