技术标签: 日常总结 分时统计 clickhouse 分组聚合 数据库
博主简介:原互联网大厂tencent员工,网安巨头Venustech员工,阿里云开发社区专家博主,微信公众号java基础笔记优质创作者,csdn优质创作博主,创业者,知识共享者,欢迎关注,点赞,收藏。
前面发布了一篇关于clickhouse常用的基础语法,有很多浏览量,这次给小伙伴分享几个进阶语法,比如如何实现分时统计,当然是通过我们的toStartOfDay()语法实现的,如何实现聚合某一列,如何更新操作,我会举几个例子供大家参考使用。
想了解其他数据库语法,请看。
clickhouse的常用语法你知道吗
Mysql数据库常用命令总结
关于PostgreSQL数据增删改查的日常总结(主要jsonb类型)
ALTER TABLE mytable.mytable
UPDATE
mytableType = 'A'
WHERE
`time` >'2021-10-07'
ALTER TABLE table_with_comment MODIFY COMMENT 'new comment on a table';
ALTER TABLE visits RENAME COLUMN webBrowser TO browser
ALTER TABLE visits MODIFY COLUMN browser Array(String)
在开发中我们可能会有需求去计算每一条的订单数量返回给前台,假如我们通过常规的方法,开始时间大于早上零点,结束时间小于晚上24点,虽然可以满足需求,但是需要for循环多次查询获取每一条的数据,肯定效率低了,而且我们用的是clickhouse,号称最快的数据库,这么搞肯定没有用到极致,那么我们可以使用这么多方法,一次查询,返回所以结果,如下。
SELECT
toStartOfDay(time) time_interval ,
sum(order_num) num
FROM
mytable.mytable
GROUP BY
toStartOfDay(order_num)
我们有这么多方法,看到字面意思应该就明白了吧。
select
toStartOfInterval(time, INTERVAL 5 minute) as minute,
count() as sumcount
from table_all
group by minute
order by sumcount desc;
numbers(7)是我们的参照表,假如不使用,当某一天数据库里没有数据就不会查询出来,这样我们想获取七天的数据就会不够七天,不方便我们在代码中写业务逻辑,所以我们使用了一个参照表。
SELECT
any(toDate(time)),
any(num)
FROM
(
SELECT
toStartOfDay(toDate(toUnixTimestamp(now64(3), 'Asia/Shanghai')-number*3600*24)) time,
toUInt16(0) AS num
FROM
numbers(7)
UNION ALL
SELECT
toStartOfDay(time) AS time,
count(*) as num
FROM
mytable.mytable
group by
time
)
GROUP BY
time
ORDER BY
time
获取过去1000天的统计,当天没有数据的赋值为0。
SELECT
toDate(time) as time,
num
FROM
(
SELECT
toStartOfDay(toDate(toUnixTimestamp(now64(3), 'Asia/Shanghai')-number*3600*24)) time,
toUInt16(0) AS num
FROM
numbers(1000)
UNION ALL
SELECT
toStartOfDay(time) AS time,
count(*) as num
FROM
mytable.mytable
group by
time
)
where time >'2021-10-01' and time <'2021-10-06'
GROUP BY
time ,num
ORDER BY
time
SELECT
time as time,
num
FROM
(
SELECT
toStartOfSecond(toDateTime64(toUnixTimestamp(now()), 3)-number) time,
0 as num
FROM
numbers(100000)
UNION ALL
SELECT
toStartOfSecond(thisTime) AS thisTime,
count(*) as num
FROM
mytable.mytable where devIp ='1'
group by
thisTime
)
where time >'2022-01-01' and time <'2022-01-12'
GROUP BY
time ,num
ORDER BY
time
这个vm_concat方法可以将某个字段聚合到一个字段里,以逗号分割,我们查询结束后在代码中通过split(“,”)可以很方便获取某一个组的数据。
SELECT
phone_attr AS area,
wm_concat(phone_ip) AS phoneIps
FROM
xda_phone
GROUP BY
phone_attr
我们有这么多方法,看到字面意思应该就明白了吧。
以上就是就是关于clickhouse数据库进阶语法,包含如何实现分时统计,如何实现聚合某一列,如何更新操作,可以参考一下,觉得不错的话,欢迎微信搜索关注java基础笔记,后面会不断更新相关知识,大家一起进步。
本文用于记录学习和日常中使用过的shell脚本【脚本1】打印形状打印等腰三角形、直角三角形、倒直角三角形、菱形#!/bin/bash等腰三角形read -p "Please input the length: " nfor i in seq 1 $ndofor ((j=$n;j>i;j–))doecho -n " "donefor m in seq 1 $idoe...
spring-security-oauth2单点登录流程图 使用支付宝扫描上方二维码领取红包
文章目录并发架构任务执行并发的取消与关闭线程池的使用多线程应该避免的问题避免活跃性问题注意性能并发程序测试并发高阶应用显式锁Java内存模型附录并发架构任务执行为什么需要并发框架更快的响应、更高的吞吐率、更可靠的稳定性串行执行任务例如下面这个例子:/** * 串行的Web服务器: 因为此程序每次只能处理一个请求,所以其执行性能很糟糕 */public class SingleThreadWebServer { public static void main(String[] a
vue写的项目 中做单点登录 获取token需要通过客户的固定地址https://XXXX.XX.XX.XX:8081/ombs/pages/gatemsg.html?appid=6&token=V1uRstCQVCR2Am64YDH6BEn(其中ombs/pages/gatemsg.html这个路径不能动)来获取token,再将token传到第三方api来获取一个有效的key,才能...
本系列文章由zhmxy555(毛星云)编写,转载请注明出处。http://blog.csdn.net/zhmxy555/article/details/7318264作者:毛星云邮箱:[email protected] 在从第一节开始看这个笔记系列的话,大家会发现,一上来就开始讲DirectX相关的内...
Redis做为现在web应用开发的黄金搭担组合,大量的被应用,广泛用于存储session信息,权限信息,交易作业等热数据。Redis作为业界最好的缓存数据库,过去几年发展很快。相对Memcached,Redis提供了更多种数据类型,包含hash、set、list等;Redis还支持subscribe/publish命令,可以用于简单的消息发送与订阅;Redis 3.0开始支持集群服务;Redis也可以把数据库持久化,但是在大多数情况Redis的竞争力是提供缓存服务。随着Redis快速发展,想要用好新功能
Step1 Problem: 给你 n 个点,m 条流量下界是 low ,上界是 up 的单向边。问你能否满足每时每刻每条边的流量都在 [low, up] 范围内,如果不满足输出 NO, 满足输出 YES 同时输出每条边的流量。Step2 Ideas: 上下界网络流和平常的网络流不同在于多出了两个点:超级源点 S, 超级汇点 T. 超级源点 S:每条边下界流量都由 S ...
以下五种解法可以寻找到数组中的最大值和最小值;1)问题分解法。 把本题看做两个独立的问题,而非一个问题,所以,每次分别找出最小值和最大值即可,此时,一共需要遍历两次数组,比较次数为2N次;(N表示数组的长度) 2)取单元素法。 维持两个变量min和max,min标记为最小值,max标记为最大值,每次取出一个元素,先与已找到的最小值比较,再与已找到的最大值比较,此种方法只
[编程题] 扑克牌大小时间限制:10秒空间限制:131072K扑克牌游戏大家应该都比较熟悉了,一副牌由54张组成,含3~A,2各4张,小王1张,大王1张。牌面从小到大用如下字符和字符串表示(其中,小写joker表示小王,大写JOKER表示大王):)3 4 5 6 7 8 9 10 J Q K A 2 joker JOKER输入两手牌,两手牌之间用“-”连接,每手牌的每张牌以空格分隔,“-”两边没有...
这几天帮学弟学妹们解决一些关于cmd运行java文件的小问题,总结出了几种问题:第一种:不是内部或外部命令,也不是可运行的程序或批处理文件。这种的也分几种:1.java不是内部或外部命令,也不是可运行的程序或批处理文件。错误原因:java环境没配好(jdk没装)处理方法:装jdk2.javac不是内部或外部命令,也不是可运行的程序或批处理文件。错误原因:javac环境没配好处理方法...
web项目:漏洞修复(3)_spring过滤器(2) 第二种方案需要3个java类+修改web.xml配置1.新增HTMLFilter.java无需修改package com.just.reserve.filter;import java.util.*;import java.util.concurrent.ConcurrentHashMap;import java