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