sum函数

分析函数用法及窗口子句 range/rows差别

我的梦境 提交于 2019-12-26 08:58:15
分析函数的语法结构一般是:分析函数名(参数) OVER (PARTITION BY子句 ORDER BY子句 ROWS/RANGE子句)。 即由以下三部分组成: 分析函数名:如sum、max、min、count、avg等聚集函数以及lead、lag行比较函数等; over: 关键字,表示前面的函数是分析函数,不是普通的集合函数; 分析子句:over关键字后面挂号内的内容; 分析子句又由下面三部分组成: partition by :分组子句,表示分析函数的计算范围,不同的组互不相干; ORDER BY: 排序子句,表示分组后,组内的排序方式; ROWS/RANGE:窗口子句,是在分组(PARTITION BY)后,组内的子分组(也称窗口),此时分析函数的计算范围窗口,而不是PARTITON。窗口有两种,ROWS和RANGE; 下面分析rows与range窗口子句的用法,先看下面例子: SQL> edit 已写入 file afiedt.buf 1 WITH t AS 2 (SELECT (CASE 3 WHEN LEVEL IN (1, 2) THEN 4 1 5 WHEN LEVEL IN (4, 5) THEN 6 6 7 ELSE 8 LEVEL 9 END) ID 10 FROM dual 11 CONNECT BY LEVEL < 10) 12 SELECT id, 13

杜教筛 [学习笔记]【更新中】

感情迁移 提交于 2019-12-26 03:44:10
杜教筛 嘟嘟嘟 tangjz orz jiry_2 orz 任之洲 2016国家队论文 orz 概述 前置技能: 莫比乌斯反演 可以在 \(O(\frac{3}{4})\) 或 \(O(\frac{2}{3})\) 复杂度完成数论函数(前缀和)的计算 一般形式 数论函数 \(f(n)\) ,求 \[ S(n) = \sum_{i=1}^n f(i) \] 对于任意数论函数 \(g(n)\) ,均满足 \[ \sum_{i=1}^n (f*g)(i) = \sum_{i=1}^n g(i)S(\lfloor \frac{n}{i} \rfloor) \] \(Proof.\) \[ \begin{align*} \sum_{i=1}^n (f*g)(i) &= \sum_{i=1}^n \sum_{d\mid i} f(d) g(\frac{i}{d}) \\ 先枚举几倍再枚举约数 \\ &= \sum_{i=1}^n g(i) \sum_{d=1}^{\lfloor \frac{n}{d} \rfloor}f(d) \\ &= \sum_{i=1}^n g(i) S(\lfloor \frac{n}{d} \rfloor) \end{align*} \] 注意枚举几倍的技巧: 对于i*j=k,我们枚举了i和j 这样的话可以得到 \[ g(1)S(n) = \sum_{i=1}^n

Java中Scanner的使用方法

人盡茶涼 提交于 2019-12-18 20:17:25
Scanner是SDK1.5新增的一个类,但是使用该类创建一个对象. Scanner reader=new Scanner(System.in); 然后reader对象调用下列方法(函数),读取用户在命令行输入的各种数据类型: next.Byte(),nextDouble(),nextFloat,nextInt(),nextLin(),nextLong(),nextShot() 上述方法运行时都会造成阻塞,等待用户在命令行输入数据回车确认.比如,拥护在键盘输入12.34,hasNextFloat()的值是true,而hasNextInt()的值是false. NextLine()等待用户输入一个文本行而且回车,该方法得到一个String类型的数据。 以下是一个实例: import java.util.*; public class Example{ public static void main(String args[]){ System.out.println("请输入若干个数,每输入一个数用回车确认"); System.out.println("最后输入一个非数字结束输入操作"); Scanner reader=new Scanner(System.in); double sum=0; int m=0; while(reader.hasNextDouble()){

递归

為{幸葍}努か 提交于 2019-12-18 06:51:38
递归的概念 函数可以自己调用自己,称为递归调用。虽然可以写出递归,但是我并不知道它是如何得出结果。 函数的递归调用 方法: 1.首先去找临界值,就是无需计算,就能获得的值 2.找这一次和上一次的关系 3.假设当前函数已经可以使用了,调用自身计算上一次的运行结果,再写出这次的运行结果 例如计算1加到n的和 sum(100) = sum(99) + 100; sum(n) = sum(n - 1) + n; 需要注意的是,递归会在短时间内,使内存剧增。 function sum(n){ if (n == 1) { return 1; } return sum(n - 1) + n; } alert(sum(100)); 结果为5050。 运行特点: 1.必须有参数 2.必须有return 实例: 通过递归,打印n个hello world function print(n){//必须有参数 if (n == 0) { return;//必须有return } document.write("hello world<br>"); return print(n - 1); } print(10); 判断一个函数是否为闰年 参数:年份  返回值:是否为闰年 function leapYear(){ var x = new Date().getYear(); if (x % 400 == 0 |

莫比乌斯反演欧拉函数杜教筛大总结

旧巷老猫 提交于 2019-12-09 12:34:04
莫比乌斯函数 定义 设 \(n=\prod_{i=1}^{k} p_i^{c_i}\) ,则 \(\mu(n)=(-1)^k\) ,特别地 \(\mu(1)=1\) 。 性质 最常用性质 \(\sum_{d|n}\mu(d)=[n=1]\) 反演性质 \(F(n)=\sum_{d|n}f(d) \Longleftrightarrow f(n)=\sum_{d|n}F(d)\mu(\frac{n}{d})\) \(F(n)=\sum_{n|d}f(d) \Longleftrightarrow f(n)=\sum_{n|d}F(d)\mu(\frac{d}{n})\) 常用性质 \(\sum_{i=1}^{n}\sum_{j=1}^{n}[gcd(i,j)=1]=\sum_{d=1}^{n}\mu(d)\lfloor\frac{n}{d}\rfloor \lfloor\frac{n}{d}\rfloor\) 欧拉函数 定义 设 \(n=\prod_{i=1}^{k}p_i^{c_i}\) ,有 \(\phi(n)=n\prod_{i=1}^{k}\frac{p_i-1}{p_i}\) 。 性质 最常用性质 \(\sum_{d|n}\phi(d)=n\) 零零散散的一些性质(没收集完) \(\phi(ab)=\frac{\phi(a)\phi(b)gcd(a,b)}{\phi(gcd(a

scala 部分应用函数与偏函数

ε祈祈猫儿з 提交于 2019-12-07 06:22:16
文章目录 一、部分应用函数 二、偏函数 一、部分应用函数 部分应用函数: 是指一个函数有N个参数, 而我们为其提供少于N个参数, 那就得到了一个部分应用函数. def sum ( a : Int , b : Int , c : Int ) = a + b + c ; 那么就可以从这个函数衍生出一个偏函数是这样的: def p_sum = sum ( 1 , _ : Int , _ : Int ) 于是就可以这样调用p_sum(2,3), 相当于调用sum(1,2,3) 得到的结果是6. 这里的两个_分别对应函数sum对应位置的参数. 所以你也可以定义成 def p_sum = sum ( _ : Int , 1 , _ : Int ) 二、偏函数 偏函数定义: 用一对大括号括起来的一系列的 case 语句 偏函数的引出,先看一段需求案例: 将 List(1, 2, 3, "abc", false) 的非数字 忽略, 将数字 + 1 并返回 def main ( args : Array [ String ] ) : Unit = { // 解决方式一 : filter + map , 可以解决问题 , 但是麻烦 val list = List ( 1 , 2 , 3 , "abc" , false ) // 选过滤 , 在 map val list1 = list . filter

mysql查询两列的总和,null值处理

别来无恙 提交于 2019-12-06 22:35:00
mysql中需要用sum()函数计算两列或者多列的总和时,可参考以下写法: select SUM(IFNULL(c1,0) + IFNULL(c2,0)) from tb_mytable sum(c1+c2+c3...)函数是计算多列的总和 ifnull(c1,0)函数的作用是,如果c1为null则把c1当作0。可解决null加其他数还是等于null的问题 来源: CSDN 作者: 汤姆猫丶 链接: https://blog.csdn.net/qq_39403545/article/details/85571986

[SDOI2015]约数个数和

狂风中的少年 提交于 2019-12-06 15:26:29
题目链接: Click here Solution: 首先,我们转化式子 \[ \sum_{i=1}^n\sum_{j=1}^m d(ij)\\ \sum_{i=1}^n\sum_{j=1}^m \sum_{x|i} \sum_{y|j}[gcd(x,y)=1]\\ \] 我们把 \(x,y\) 给提前 \[ \sum_{x=1}^n\sum_{y=1}^m \lfloor \frac{n}{x} \rfloor \lfloor \frac{m}{y} \rfloor [gcd(x,y)=1] \] 我们把 \(gcd(x,y)\) 提前, \(x,y\) 不太好看,再给他换个名字 \(i,j\) \[ \sum_{i=1}^n \sum_{j=1}^m \lfloor \frac{n}{i} \rfloor \lfloor \frac{m}{j} \rfloor \sum_{d|i} \sum_{d|j} \mu(d)\\ \] 我们把 \(d\) 提前 \[ \sum_{d=1}^n \mu(d) \sum_{i=1}^{\lfloor \frac{n}{d} \rfloor} \sum_{j=1}^{\lfloor \frac{m}{d} \rfloor} \lfloor \frac{n}{di} \rfloor \lfloor \frac{m}{dj} \rfloor \]

Python中的自定义sum函数

笑着哭i 提交于 2019-12-06 14:55:59
最近在天天学习Python,学到匿名函数时,突然写了一个特别简洁的函数,所以就打算把它分享出来 郑重声明,我写的是一个sum函数,虽然不知道python内置的是怎么实现的,在写之前,也从未看过源码 def sum(*args): return reduce(lambda x,y:x+y,args) 传的是可变参数,当然要是传其他的也好改 我自己感觉这是实现sum求和的最简单的实现方式了 *args表示的是可变参数,这没啥好解释的 lambda这是一个匿名函数,“:”前面的是传入的参数,后面是返回的结果,注意只能是一个表达式 而reduce()是一个高阶函数,有两个参数,第一个是一个函数,该函数得有两个参数,第二个参数是一个序列 reduce就是把一个函数作用在一个序列 [x1, x2, x3, ...] 上,这个函数必须接收两个参数, reduce 把结果继续和序列的下一个元素做累积计算 来源: CSDN 作者: xuxiaoqun0_0 链接: https://blog.csdn.net/xuxiaoqun0_0/article/details/73004491

leetcode 523. 连续的子数组和 java

こ雲淡風輕ζ 提交于 2019-12-05 03:52:04
题目: 给定一个包含非负数的数组和一个目标整数 k,编写一个函数来判断该数组是否含有连续的子数组,其大小至少为 2,总和为 k 的倍数,即总和为 n*k,其中 n 也是一个整数。 示例 1: 输入: [23,2,4,6,7], k = 6 输出: True 解释: [2,4] 是一个大小为 2 的子数组,并且和为 6。 示例 2: 输入: [23,2,6,4,7], k = 6 输出: True 解释: [23,2,6,4,7]是大小为 5 的子数组,并且和为 42。 说明: 数组的长度不会超过10,000。 你可以认为所有数字总和在 32 位有符号整数范围内。 解题: import java.util.*; class Solution { public boolean checkSubarraySum(int[] nums, int k) { Set<Integer> s = new HashSet(); if(nums == null || nums.length==0) return false; int sum = 0, lastSum = 0; for(int i=0;i<nums.length;i++){ sum += nums[i]; if(k!=0) //求余数 sum%=k; //两次余数相同,则他们的差即可被k整除 if(s.contains(sum)){