DISTINCT去重
格式:select DISTINCT 字段1,字段2... from 表名 筛选条件
例如:select distinct name from student;
例如:select distinct name,age from student;
注意:字段必须放在distinct后面
多字段时,以字段组合在一起的结果进行去重
as取别名:把查询到的结果,显示的名称进行更改和使用
格式:结果 as 名称
注意:as 可以不写
count统计行数
格式:count(列名)
例如:select count(*) from student;
例如:select count(name) from student;
注意:单独查询一列时,null不参与统计
count()不能写在where子句
格式:sum(列名);
例如:select sum(age) from student;
注意:只能对数字的列进行求和,对没有数字的列求和不会报错,但是结果为0
列中有null,不会影响计算结果
sum()不能写在where子句
格式:avg(列名);
例如:select avg(age) from student;
注意:只能对数字的列进行求和
列中有null,不会影响计算结果
avg()不能写在where子句
格式:max()
例如:select max(name) from student;
注意:可以对varchar的列进行获取
列中有null,不会影响计算结果
max/min不能写在where子句
concat多字段进行拼接显示,不会将值累加
格式:concat(字段,字符串,...)
例如:select concat(name,",",sex) from student;
+拼接求和 上面标识拼接,下面值求和
例如:select age+'20' from student;
名字会显示为age+'20'
结果每一个数据都进行+20
查询时间
日期转换成字符串
字符串转为日期,Y需用大写
日期相加减,前面减去后面
格式1:round(值)
指定保留几位小数
格式2:round(值,保留几位小数)
注意:只计算小数点后第一位
格式一
格式二
格式:floor(值)
格式:rand()
注意:产生的随机数范围在0-1之间
100以内的随机数
order by排序
格式:order by 字段,字段...;
asc升序 desc降序
注意:默认是升序的
- 在查询过程中form->where->order by->limit->select
- from 永远在开始,select永远在最后。
- 求TopN
select * from student order by age limit 3;
group by分组
格式:group by 字段,字段...;
例如:select max(age),sex from student group by sex;
注意:分组之后select显示的结果,分了几组就显示几条
分组过程中把相同组的数据聚合到了一起,所以分组和聚合函数一起使用
having:筛选
例如:select count(*) as count from student group by sex where count<6;--不好使
select count(*) as count from student group by sex having count<6;
having和where区别
where先筛选之后再产生结果,不能使用产生的结果作为条件
having先产生结果之后在进行筛选,能使用产生的结果作为条件
DISTINCT去重
格式:select DISTINCT 字段1,字段2... from 表名 筛选条件
例如:select distinct name from student;
例如:select distinct name,age from student;
注意:字段必须放在distinct后面
多字段时,以字段组合在一起的结果进行去重
as取别名:把查询到的结果,显示的名称进行更改和使用
格式:结果 as 名称
注意:as 可以不写
聚合函数:
count统计行数
格式:count(列名)
例如:select count(*) from student;
例如:select count(name) from student;
注意:单独查询一列时,null不参与统计
count()不能写在where子句
sum求和
格式:sum(列名);
例如:select sum(age) from student;
注意:只能对数字的列进行求和
列中有null,不会影响计算结果
sum()不能写在where子句
avg求平均值
格式:avg(列名);
例如:select avg(age) from student;
注意:只能对数字的列进行求和
列中有null,不会影响计算结果
avg()不能写在where子句
max/min求最大最小值
格式:max()
例如:select max(name) from student;
注意:可以对varchar的列进行获取
列中有null,不会影响计算结果
max/min不能写在where子句
concat多字段进行拼接显示
格式:concat(字段,字符串,...)
例如:select concat(name,",",sex) from student;
+拼接和求和
例如:select age+'20' from student;
名字会显示为age+'20'
结果每一个数据都进行+20
select current_timestamp, current_timestamp();
(日期转换为字符串)函数:date_format(date,format)
select date_format(current_timestamp(),"%Y-%m-%d");
(字符串转换为日期)函数:str_to_date(str, format)
select STR_TO_DATE("2020-01-01","%Y-%m-%d");
日期相减函数:datediff(date1,date2)
select DATEDIFF(STR_TO_DATE("2021-01-01","%Y-%m-%d"),STR_TO_DATE("2020-01-01","%Y-%m-%d"))
DATE_ADD() 函数向日期添加指定的时间间隔。
select DATE_ADD(STR_TO_DATE("2021-01-01","%Y-%m-%d"),INTERVAL -5 day);
round() 四舍五入
格式1:round(值)
指定保留几位小数
格式2:round(值,保留几位小数)
注意:只计算小数点后第一位
floor()向下取整
格式:floor(值)
rand()随机数
格式:rand()
注意:产生的随机数范围在0-1之间
order by排序
格式:order by 字段,字段...;
asc升序 desc降序
注意:默认是升序的
在查询过程中form->where->order by->limit->select
求TopN
select * from student order by age limit 3;
group by分组
格式:group by 字段,字段...;
例如:select max(age),sex from student group by sex;
注意:分组之后select显示的结果,分了几组就显示几条
分组过程中把相同组的数据聚合到了一起,所以分组和聚合函数一起使用
having:筛选
例如:select count(*) as count from student group by sex where count<6;--不好使
select count(*) as count from student group by sex having count<6;
having和where区别
where先筛选之后再产生结果,不能使用产生的结果作为条件
having先产生结果之后在进行筛选,能使用产生的结果作为条件
求简单TopN
select * from student order by age limit 3;
分组求TopN
Top1:select max(age),sex from student1 group by sex;
Top3:select * from student1 s where (select count(age) from student1 where student1.sex=s.sex and student1.age >s.age)<3;
java
java入门基础学习(一)
java入门基础学习(二)
java入门基础学习(三)
java入门基础学习(四)
java入门基础学习(五)
java入门基础学习(六)
java入门基础学习(七)
java入门基础学习(八)
java入门基础学习(九)
java入门基础学习(十)
java入门基础学习(十一)
java入门基础学习(十二)
java入门基础学习(十三)
java入门基础学习(十四)Maven Git
java总结,题目+笔记
java进阶之常见对象(一)
java进阶之常见对象(二)
java进阶之冒泡排序
java进阶之选择排序
java进阶之面向对象(封装)
java进阶之面向对象(代码块、继承)
java进阶之面向对象(多态、抽象、接口)
java进阶之匿名内部类、访问修饰符、包
java进阶之io流(字节流,字符流)
Linux
Linux基础一
Linux基础二
Mysql
mysql一
文章目录一、基本功能1.去重2.取别名3.聚合函数1)count统计行数2)sum 求和3)avg求平均4)max/min求最大最小值4.字符串函数1)concat拼接2)+拼接并求和5.日期函数6.数值计算函数1)round()四舍五入2)floor()向下取整3)rand()随机数一、基本功能1.去重 DISTINCT去重 格式:select DISTINCT 字段1,字段2... from 表名 筛选条件 例如:select distinct name from student; 例
一、什么是计数排序
计数排序(Counting sort)是一种非基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中以达到排序的效果
2.算法原理
给定一组取值范围为0到9的无序序列:1、7、4、9、0、5、2、4、7、3、4,建立一个长度为10的计数数组,值初始化为0
遍历无序序列,将每个序列元素值对应的计数数组下标的元素加1
如:第一个序列元素为1,则计数数组中下标为1的元素加1
第二个序列元素为7,计数数组中下标为7的元素加1
继续遍历序列,当序列遍历完毕,
T.event_code as "事件编码",
SUM(click_records) as "点击数量",
round(SUM(stay_time)/60000,0) as "使用时长(单位:分钟)"
(SELECT m.* FROM default.d...
<h3>回答2:</h3><br/>要求一个 float 数组的最大值、最小值、和、平均值,可以采用以下方法:
1. 最大值:遍历整个数组,找出数组中的最大值元素,时间复杂度为 O(n)。
2. 最小值:同样地,遍历整个数组,找出数组中的最小值元素,时间复杂度为 O(n)。
3. 数组和:遍历整个数组,将数组中的所有元素相加即可,时间复杂度为 O(n)。
4. 平均值:先计算出数组的总和,然后除以数组的长度即可得到数组的平均值,时间复杂度为 O(n)。
具体的代码实现如下:
```python
def array_ops(arr):
max_val = float('-inf')
min_val = float('inf')
arr_sum = 0
arr_len = len(arr)
for val in arr:
#获取最大值
if val > max_val:
max_val = val
#获取最小值
if val < min_val:
min_val = val
#获取数组总和
arr_sum += val
#计算平均值
arr_avg = arr_sum / arr_len
#返回结果
return {"max_val": max_val, "min_val": min_val, "arr_sum": arr_sum, "arr_avg": arr_avg}
以上即是求一个 float 数组的最大值、最小值、数组和、平均值的方法和代码实现。如果需要保留小数位数,可以使用 Python 的 Decimal 类型进行精确计算。
<h3>回答3:</h3><br/>对于给定的一个float类型的数组,我们可以采取以下几种方法来求最大最小值、求和、求平均值。
1. 遍历数组,找出最大值和最小值。这种方法简单但效率较低,需要遍历整个数组才能得到结果。
2. 使用Arrays类中的sort()方法对数组进行排序,然后取数组头和尾的元素即可得到最小值和最大值。这种方法的效率比第一种要高,最好的情况下可以只遍历一半的数组元素。
3. 对数组进行遍历,累加每个元素的值,即可得到数组的总和。然后除以数组的长度就可以得到平均值。
4. Java 8中引入的流式API也可以轻松解决这个问题。使用流的max()和min()方法可以快速找到最大值和最小值,使用sum()方法可以求和,使用average()方法可以求平均值。
示例代码如下:
float[] arr = {2.5f, 3.8f, 1.2f, 4.5f, 2.0f};
// 方法一:遍历求最大最小值
float maxValue = Float.MIN_VALUE;
float minValue = Float.MAX_VALUE;
for (float num : arr) {
if (num > maxValue) {
maxValue = num;
if (num < minValue) {
minValue = num;
System.out.println("最大值为:" + maxValue);
System.out.println("最小值为:" + minValue);
// 方法二:排序求最大最小值
Arrays.sort(arr);
System.out.println("最小值为:" + arr[0]);
System.out.println("最大值为:" + arr[arr.length - 1]);
// 方法三:遍历求和和平均值
float sum = 0f;
for (float num : arr) {
sum += num;
float average = sum / arr.length;
System.out.println("数组总和为:" + sum);
System.out.println("数组平均值为:" + average);
// 方法四:使用流求最大最小值、求和和平均值
float max = Arrays.stream(arr).max().getAsFloat();
float min = Arrays.stream(arr).min().getAsFloat();
float total = Arrays.stream(arr).sum();
float avg = (float) Arrays.stream(arr).average().getAsDouble();
System.out.println("最大值为:" + max);
System.out.println("最小值为:" + min);
System.out.println("数组总和为:" + total);
System.out.println("数组平均值为:" + avg);
无论采用哪种方法,最终都能求出float数组的最大值、最小值、总和和平均值。需要注意的是,在处理数组时应该注意数据类型和边界情况,确保代码的正确性和鲁棒性。