group

SQL case when 语句解析

▼魔方 西西 提交于 2020-04-07 07:00:42
一,原始单表(也是从其他博客看到)及其查询后效果。 原始表: 查询后(要求查询后按照洲统计人口): 二,SQL探讨 *初始化insert语如下: INSERT INTO cptable VALUES (NULL ,'中国',600); INSERT INTO cptable VALUES (NULL ,'美国',100); INSERT INTO cptable VALUES (NULL ,'加拿大',100); INSERT INTO cptable VALUES (NULL ,'英国',200); INSERT INTO cptable VALUES (NULL ,'法国',300); INSERT INTO cptable VALUES (NULL ,'日本',250); INSERT INTO cptable VALUES (NULL ,'德国',200); INSERT INTO cptable VALUES (NULL ,'墨西哥',50); INSERT INTO cptable VALUES (NULL ,'印度',250); *SQL查询语句 表达方式A: SELECT SUM(population), CASE country WHEN '中国' THEN '亚洲' WHEN '印度' THEN '亚洲' WHEN '日本' THEN '亚洲' WHEN '美国

ThreadFactory & ThreadGroup

本秂侑毒 提交于 2020-03-01 23:56:21
原本想给 多线程任务 做一个挂起(暂停)功能,然后配合 httpcomponents-asyncclient 并发测试,结果意外令人汗颜,竟然CPU占用100%。。。 使用VisualVM观察CPU抽样,发现 org.apache.http.impl.nio.reactor.AbstractIOReactor.execute() 方法总是占用大部分CPU,然而没调用挂起操作时却一切正常。 这挂起操作的其中一环需要中断线程,这些线程均出产自自定义ThreadFactory : public class GroupThreadFactory implements ThreadFactory { private final ThreadGroup group; private final AtomicInteger threadNumber; public GroupThreadFactory() { this.group = new ThreadGroup("WorkerGroup"); this.threadNumber = new AtomicInteger(1); } public Thread newThread(Runnable r) { Thread t = new Thread(null, r, "pool-thread-" + threadNumber

oracle中within group的用法

柔情痞子 提交于 2019-12-15 16:23:00
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> within group语句和group by没有半毛钱关系,只是一些单值聚合函数的辅助关键字,下面以rank函数为例。 rank在oracle中分为聚合函数和分析函数两种,本篇不介绍分析函数,参考分析函数篇章。 聚合函数的rank语法为:rank(expr1,expr2) within group (order by expr3,expr4 [desc/asc] nulls [first/last]) 表示计算以expr3,expr4为排序条件的结果集中,expr3=expr1 and expr4=expr2的记录排序号,返回为数字类型。排序为非紧凑排序,即前两条记录相同,那么排序号依次是1,1,3... 使用时无需一定要和group by搭配使用。 所谓触类旁通,只要知道within group在rank中的含义,那么和其他函数一起使用时,也就无师自通了。 可以使用within group关键字的函数有rank,dense_rank,PERCENT_RANK,PERCENTILE_CONT,PERCENTILE_DISC等 来源: oschina 链接: https://my.oschina.net/u/105376/blog/53024

mysql group by 分组查询

…衆ロ難τιáo~ 提交于 2019-12-10 08:59:11
请看下表: 问题: 把 统计时间(statistic)相同 的,服务域(service_domain_moid) a中的hd100的数量的和与hd100s的数量的和计算出来。 使用方法: group by 首先,我们把service_domain_moid为a的筛选出来,如下: select * from statistic where service_domain_moid="a"; 其次: 我们把统计时间(statistic_time)相同的分组,求和 select sum(hd100), sum(hd100s) from statistic where service_domain_moid="a" group by statistic_time; 最后,把统计结果按降序排序: select sum(hd100), sum(hd100s), statistic_time from statistic where service_domain_moid="a" group by statistic_time order by statistic_time desc; 对查询结果排序 : 从表中查询出来的数据可能是无序的,或者其排列顺序不是用户所期望的顺序。为了使查询结果的顺序能满足用户的需求,可以使用 ORDER BY 关键字对记录进行排序。其语法规则如下: ORDER BY

mysql基础知识理解和sql题讲解分析面试实战(一)之groupBy&&having

旧巷老猫 提交于 2019-12-10 03:19:21
mysql 之groupBy&&having 的使用 groupby和having在什么情况下使用 使用时需要注意什么 groupby和having在什么情况下使用 问题 :根据平均值分析表 demo :原始表 结果表:根据每位user的rate的平均值更新rate, rate = rate - avg(rate) 实现步骤 step 1 创建表 -若你是想做大数据,一定要控制表字段的大小,字段最好不要为空,为空会导致索引失败 CREATE table userRate( id int(2) NOT null auto_increment, user int(2) not null DEFAULT 0, rate int(2) not null DEFAULT 0, PRIMARY KEY(id) ) step2 插入数据- 注意插入的时候因id是自增长的,所以不用,但是在表后面需填写你要插入的字段名 INSERT into userRate(user,rate) VALUES(1,1),(1,3),(1,2),(2,4),(2,4),(2,5),(2,3); step3 执行sql更新查询 update userRate JOIN (SELECT id,USER,AVG(rate) AS avr from userRate GROUP BY user HAVING user=

SQL学习精粹之group by分组

若如初见. 提交于 2019-12-04 06:46:33
group by 有一个原则, 不分组必聚合原则: 就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面(重要) 一、group by取最大值 面试遇到一个分组取最大值的问题 例子一 取最新充值记录 充值记录表 CREATE TABLE chongZhi ( id int not null primary key AUTO_INCREMENT COMMENT '主键编号', userId int COMMENT '充值用户id', jine int COMMENT '充值金额', date date COMMENT '充值日期' )ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '充值记录表'; insert into chongZhi(userId,jine,date) value(1,20,'2016-10-28'); insert into chongZhi(userId,jine,date) value(1,60,'2016-10-29'); insert into chongZhi(userId,jine,date) value(1,55,'2016-10-30'); insert into chongZhi(userId,jine,date) value(2,100,'2016-10-22')