SQLite Group By

sqlite group by

sqlite 的 group by 子句用于与 select 语句一起使用,来对相同的数据进行分组。

在 select 语句中,group by 子句放在 where 子句之后,放在 order by 子句之前。

 

1. 语法

下面给出了 group by 子句的基本语法。group by 子句必须放在 where 子句中的条件之后,必须放在 order by 子句之前。

select column-list
from table_name
where [ conditions ]
group by column1, column2....columnn
order by column1, column2....columnn

您可以在 group by 子句中使用多个列。确保您使用的分组列在列清单中。

 

2. 范例

假设 company 表有以下记录:

id          name        age         address     salary
----------  ----------  ----------  ----------  ----------
1           paul        32          california  20000.0
2           allen       25          texas       15000.0
3           teddy       23          norway      20000.0
4           mark        25          rich-mond   65000.0
5           david       27          texas       85000.0
6           kim         22          south-hall  45000.0
7           james       24          houston     10000.0

如果您想了解每个客户的工资总额,则可使用 group by 查询,如下所示:

sqlite> select name, sum(salary) from company group by name;

这将产生以下结果:

name        sum(salary)
----------  -----------
allen       15000.0
david       85000.0
james       10000.0
kim         45000.0
mark        65000.0
paul        20000.0
teddy       20000.0

现在,让我们使用下面的 insert 语句在 company 表中另外创建三个记录:

insert into company values (8, 'paul', 24, 'houston', 20000.00 );
insert into company values (9, 'james', 44, 'norway', 5000.00 );
insert into company values (10, 'james', 45, 'texas', 5000.00 );

现在,我们的表具有重复名称的记录,如下所示:

id          name        age         address     salary
----------  ----------  ----------  ----------  ----------
1           paul        32          california  20000.0
2           allen       25          texas       15000.0
3           teddy       23          norway      20000.0
4           mark        25          rich-mond   65000.0
5           david       27          texas       85000.0
6           kim         22          south-hall  45000.0
7           james       24          houston     10000.0
8           paul        24          houston     20000.0
9           james       44          norway      5000.0
10          james       45          texas       5000.0

让我们用同样的 group by 语句来对所有记录按 name 列进行分组,如下所示:

sqlite> select name, sum(salary) from company group by name order by name;

这将产生以下结果:

name        sum(salary)
----------  -----------
allen       15000
david       85000
james       20000
kim         45000
mark        65000
paul        40000
teddy       20000

让我们把 order by 子句与 group by 子句一起使用,如下所示:

sqlite>  select name, sum(salary) 
         from company group by name order by name desc;

这将产生以下结果:

name        sum(salary)
----------  -----------
teddy       20000
paul        40000
mark        65000
kim         45000
james       20000
david       85000
allen       15000

下一节:sqlite having 子句

sqlite教程

相关文章