数据库进行SQL分组查询后再过滤

数据库进行SQL分组查询后再过滤,第1张

你的表述我没看得太清, “根据type类型的不同” 统计是否忽略了city_id

最好 举个例子说明一下期望的算法

我根据你的表述,猜测你这里包含两层分组业务,

第一,根据city_id进行分组, 后用分组结果进行比较再次统计

如果你是10g或以上,可以试试以下语句

with grp1 as ( select sum(ws_succ)ssucc, sum(ws_stat) sstat ,city_id ,type

from tab_open_success_ratio

where ws_stat>0

group by city_id ,type)

select sum(ssucc)10000/sum(sstat),sum(sstat),type

from grp1

group by type

建用户和授权要用DBA

最简单得建用户:

create user 用户名 identified by 密码

用户解锁 alter user 用户名 account unlock(不解锁无法登陆)

授权用 grant

建完用户首先要授权登陆权限

grant create session to 用户名

授权可以授权给角色和用户

也可以把角色授权给角色和用户

其他得类似 创建表得权限类似如下格式:

grant create table to 用户

第二节为大家介绍了数据的查询,这一小节为大家深入讲解查询过程中的数据分组和排序,分组关键字为:group by,排序关键字为:order by,过滤分组的关键字为:having;

group by:对查询的数据按照某一类型进行分组, group by 一般用在order by子句之前,where子句之后

order by:对查询的数据进行某一类进行排序 或 对分组后的数据进行排序

having:对分组后的数据进行条件过滤

继续以上一章创建的客户表为例,表名: customer ,表有列: cus_id,cus_no,cus_name,cus_age,cus_adds。

eg:查询客户的基本信息,以id进行分组: select cus_id,count() as num from customer group by cus_id;  num表示对应的cus_id有多少客户数据, 查询结果如下

如果分组的列中有null值,那么null将作为一个分组返回,如果有多个行都为null值,它们将会被分为一组返回。 group by 必须用在where子句之后,order by子句之前。

除group by可以进行分组过滤数据外,having也可以进行过滤分组;having过滤和where类似,唯一区别在于where是过滤行,而having是过滤分组,可看以下列子:

eg: 查询以id分组后数据总量两条以上的数据: select cus_id,count() as num from customer group by cus_id having count() >= '2'; 满足条件的就只有一条数据

order by主要用于数据排序的情况,当查询数据量较大时,有序的数据会让人更好地直观观察数据,order by 关键字用于对结果集按照一个列或者多个列进行排序。此外order by 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,您可以使用 DESC 关键字。使用方法如下

eg:查询客户的基本信息,以年龄进行排序,默认升序:select  from customer order by cus_age;

eg:查询客户的基本信息,以年龄进行排序,降序方式排序:select  from customer order by cus_age DESC;

升序使用ASC,降序使用DESC,系统默认为升序。注意两者之间的差异

当对多个列进行排序时,order by使用方法如下:

order by A,B   --过滤数据都是默认按升序排列

order by A desc,B   --过滤数据时 A 降序,B 升序排列

order by A ,B desc   --过滤数据时 A 升序,B 降序排列

desc 或者 asc 只对它紧跟着的第一个列名有效,其他不受影响,仍然是默认的升序。

本小节介绍排序分组就到这里了,通过多分组排序的介绍,知道了group by,order by,having三者之间的差异和区别,大家可以在自己电脑多编写几个脚本,深入了解三个关键字的使用。

对分片的键值,进行分组,每组对应到一个具体的数据库。路由分组功能允许把相同前缀的路由定义合并分组,分组路由是对分片的键值,进行分组,每组对应到一个具体的数据库,这样可以简化路由定义,提高匹配效率。路由是指分组从源到目的地时,决定端到端路径的网络范围的进程。

以上就是关于数据库进行SQL分组查询后再过滤全部的内容,包括:数据库进行SQL分组查询后再过滤、oracle数据库分组和联结查询、三、MySQL数据库之分组排序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10151370.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存