SQL如何查询一张表的所有字段并按其中一个字段进行分组

如题所述

1、创建测试表,

create table test_group_cols(id number,  value varchar2(20), remark varchar2(20));

2、插入测试数据

insert into test_group_cols values(1,'15y','rmk1');

insert into test_group_cols values(2,'15y','rmk1');

insert into test_group_cols values(3,'25x','rmk2');

insert into test_group_cols values(3,'333','rmk4');

insert into test_group_cols values(3,'666','rmk3');

insert into test_group_cols values(4,'35s','rmk1');

insert into test_group_cols values(4,'77','rmk1');

3、查询该表的所有字段,select t.*, rowid from user_tab_cols t where table_name = upper('test_group_cols'),可以发现共有3个字段,

4、编写sql,按id字段进行分组,select id, count(*) from test_group_cols t group by id,

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-21
GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。
group by 也可以同时使用多个字段进行分组
例子:
假设一个表tab有一个id字段、一个Name字段,内容如下
id Name
3 张三
5 李四
1 王五
1 赵六

sql 语句
select * from tab group by id

这条SQL的结果应该是
id Name
1 王五
3 张三
5 赵六
第一个Name显示的是王五 因为sql group by满足条件的有多个时是取第一个的
上面的结果并没有什么实际意义 group by 一般结合合计函数一起使用
比如 sql语句
select id, count(*) total from tab group by id
用于统计每个id有多少个
结果
id total
1 2
3 1
5 1
第2个回答  2013-11-07
select * from 表名 group by 字段
一定会报错的,select 后面1 是分组的字段,要么是聚合函数 max min sum arg 等
你分组是要进行汇总统一计吗?要是这样的话,你就加聚合函数就好 了
第3个回答  2015-09-25
group by 必须搭配 聚组函数一起使用。使用order by ,可以达到你要的效果
第4个回答  2013-11-07
select * from 表
group by 其中一个字段名称
相似回答