SQL Server中的开窗函数是什么?sparksql 开窗函数怎么用

2025-03-12 05:40:02 0

SQL Server中的开窗函数是什么?sparksql 开窗函数怎么用

本文目录

SQL Server中的开窗函数是什么

开窗函数(OVER子句)用于为行定义一个窗口(这里的窗口是指运算将要操作的行的集合),它对一组值进行操作,不需要使用GROUP BY子句对数据进行分组,能够在同一行中同时返回基础行的列和聚合列。举例来说,如果要得到一个年级所有班级所有学生的平均分,按照传统的写法,肯定是通过AVG聚合函数来实现求平均分。由于聚合函数是以GROUP BY 查询作为操作的上下文对一组值进行聚合,GROUP BY 操作对数据进行分组后,查询为每个组只返回一行数据,因此,我们不能同时返回基础列(班级,学生等列),而只能得到聚合列。

sparksql 开窗函数怎么用

row_number方法,相当于groupTopN。分组排序应用非常广泛。package com.dt.sparkimport org.apache.spark.sql.hive.HiveContextimport org.apache.spark.{SparkContext, SparkConf}object SparkSQLWindowFunctionOps { def main(args:Array) { val conf: SparkConf = new SparkConf().setAppName(“SparkSQLWindowFunctionOps“).setMaster(“spark://Master:7077“) val sc = new SparkContext(conf) val hiveContext = new HiveContext(sc) //构建SQL上下文!

求助原子哥,开窗函数LCD

LCD显示是静态的,如果你不刷新的话,它是不会变的。不同位置刷新不同图片,方案也比较灵活的,最费时的,就是整个图刷新,但是只有需要变化的那图改变,其他的虽然没变,但也同时刷新,如果慢了给人的感觉就是整个画面慢慢展开了。还有就是自己定义一个开窗函数,通过打点函数改写指定区域的RAM,这样的会方便的多的,也不会出现真个画面都变了。

oracle 开窗函数 rows 和什么等价

oracle 开窗函数 rows 和什么等价开窗函数的的理解:开窗函数指定了分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化而变化,举例如下:over(order by salary) 按照salary排序进行累计,order by是个默认的开窗函数over(partition by deptno)按照部门分区

SQL server 开窗函数里可以加聚集函数嘛类似rank() over (order by sum(distinct a) )

CASE WHEN wst.score - 60 《 0 THEN ---当wst.score 《60的时候执行开窗函数RANK() OVERRANK() OVER (PARTITION BY 当wst.score 《60的时候,如果wst.score 》=60直为null,否则的话当作’A’,--〉最终结果是按照wst.score 《60(也就是null) 和 ’A’分组CASE WHEN wst.score - 60 》= 0 THEN NULL ELSE ’A’ END ORDER BY wst.score DESC) END 整个就是1)如果wst.score 《601.1按照 《60(’A’). 》=60(NULL)分组,注意,此时分组的是A和null1.2按照A和NULL分组后按照wst.score组内降序排列 所以说你那个SQL语句性能很不好,可以优化的。你可以给个例子和你想要得结果,我可以帮你看看能否改进。另外,你最外层那个CASE没有else,程序很不健壮哦。。。

oracle开窗函数到底有哪些啊,谁能一一举个

窗口函数可以计算一定 记录范围内、一定值域内、或者一段时间内的累计和以及移动平均值等等.之所以使用窗口这个术语,是因为对结果的处理使用了一个滑动的查询结果集范围。

能说一下oracle中的开窗函数 聚合函数 分析函数都是什么吗

我也是用oracle数据库的,在实际开发中用到开窗函数和分析函数的机会还是很少的,用聚合函数的时候非常多,请LZ多关注聚合函数,下面是我上各大网站收集的,希望对楼主有所帮助。分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是对于每个组返回多行,而聚合函数对于每个组只返回一行。下面通过几个例子来说明其应用。 1:统计某商店的营业额。 date sale 1 20 2 15 3 14 4 18 5 30 规则:按天统计:每天都统计前面几天的总额 得到的结果: DATE SALE SUM ----- -------- ------ 1 20 20 --1天 2 15 35 --1天+2天 3 14 49 --1天+2天+3天 4 18 67 . 5 30 97 . 2:统计各班成绩第一名的同学信息 NAME CLASS S ----- ----- ---------------------- fda 1 80 ffd 1 78 dss 1 95 cfe 2 74 gds 2 92 gf 3 99 ddd 3 99 adf 3 45 asdf 3 55 3dd 3 78 通过: -- select * from ( select name,class,s,rank()over(partition by class order by s desc) mm from t2 ) where mm=1 -- 得到结果: NAME CLASS S MM ----- ----- ---------------------- ---------------------- dss 1 95 1 gds 2 92 1 gf 3 99 1 ddd 3 99 1 注意: 1.在求第一名成绩的时候,不能用row_number(),因为如果同班有两个并列第一,row_number()只返回一个结果 2.rank()和dense_rank()的区别是: --rank()是跳跃排序,有两个第二名时接下来就是第四名 --dense_rank()l是连续排序,有两个第二名时仍然跟着第三名3.分类统计 (并显示信息) A B C -- -- ---------------------- m a 2 n a 3 m a 2 n b 2 n b 1 x b 3 x b 2 x b 4 h b 3 select a,c,sum(c)over(partition by a) from t2 得到结果: A B C SUM(C)OVER(PARTITIONBYA) -- -- ------- ------------------------ h b 3 3 m a 2 4 m a 2 4 n a 3 6 n b 2 6 n b 1 6 x b 3 9 x b 2 9 x b 4 9 如果用sum,group by 则只能得到 A SUM(C) -- ---------------------- h 3 m 4 n 6 x 9 无法得到B列值 =====select * from test数据:A B C1 1 11 2 21 3 32 2 53 4 6---将B栏位值相同的对应的C 栏位值加总select a,b,c, SUM(C) OVER (PARTITION BY B) C_Sumfrom testA B C C_SUM1 1 1 11 2 2 72 2 5 71 3 3 33 4 6 6---如果不需要已某个栏位的值分割,那就要用 nulleg: 就是将C的栏位值summary 放在每行后面select a,b,c, SUM(C) OVER (PARTITION BY null) C_Sumfrom testA B C C_SUM1 1 1 171 2 2 171 3 3 172 2 5 173 4 6 17 求个人工资占部门工资的百分比SQL》 select * from salary;NAME DEPT SAL---------- ---- -----a 10 2000b 10 3000c 10 5000d 20 4000SQL》 select name,dept,sal,sal*100/sum(sal) over(partition by dept) percent from salary;NAME DEPT SAL PERCENT---------- ---- ----- ----------a 10 2000 20b 10 3000 30c 10 5000 50d 20 4000 100二:开窗函数 开窗函数指定了分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化而变化,举例如下:1: over(order by salary) 按照salary排序进行累计,order by是个默认的开窗函数 over(partition by deptno)按照部门分区2: over(order by salary range between 5 preceding and 5 following) 每行对应的数据窗口是之前行幅度值不超过5,之后行幅度值不超过5 例如:对于以下列 aa 1 2 2 2 3 4 5 6 7 9 sum(aa)over(order by aa range between 2 preceding and 2 following) 得出的结果是 AA SUM ---------------------- ------------------------------------------------------- 1 10 2 14 2 14 2 14 3 18 4 18 5 22 6 18 7 22 9 9 就是说,对于aa=5的一行,sum为 5-1《=aa《=5+2 的和 对于aa=2来说,sum=1+2+2+2+3+4=14 ; 又如 对于aa=9 ,9-1《=aa《=9+2 只有9一个数,所以sum=9 ; 3:其它: over(order by salary rows between 2 preceding and 4 following) 每行对应的数据窗口是之前2行,之后4行4:下面三条语句等效: over(order by salary rows between unbounded preceding and unbounded following) 每行对应的数据窗口是从第一行到最后一行,等效: over(order by salary range between unbounded preceding and unbounded following) 等效 over(partition by null)other(数用于计算基于组的某种聚合值,它和聚合函数的不同之处是对于每个组返回多行,而聚合函数对于每个组只返回一行。一、 over函数 over函数指定了分析函数工作的数据窗口的大小,这个数据窗口大小可能会随着行的变化而变化,例如:over(order by salary)按照salary排序进行累计,order by是个默认的开窗函数over(partition by deptno) 按照部门分区over(order by salary range between 50 preceding and 150 following)每行对应的数据窗口是之前行幅度值不超过50,之后行幅度值不超过150的数据记录over(order by salary rows between 50 perceding and 150 following)前50行,后150行over(order by salary rows between unbounded preceding and unbounded following)所有行over(order by salary range between unbounded preceding and unbounded following)所有行二、 sum函数 功能描述:该函数计算组中表达式的累积和。SAMPLE:下例计算同一经理下员工的薪水累积值SELECT manager_id, last_name, salary,SUM (salary) OVER (PARTITION BY manager_id ORDER BY salaryRANGE UNBOUNDED PRECEDING) l_csumFROM employeesWHERE manager_id in (101,103,108);三、 应用实例1, 测试环境设置设有销售表t_sales (subcompany,branch,region,customer,sale_qty); 存储客户的销售明细,记录如下所示。Subcompany Branch Region Customer Sale_qty北京分公司 北京经营部 片区1 客户1 1北京分公司 北京经营部 片区1 客户1 1北京分公司 北京经营部 片区1 客户2 1北京分公司 北京经营部 片区1 客户2 1北京分公司 北京经营部 片区2 客户1 1北京分公司 北京经营部 片区2 客户1 1北京分公司 北京经营部 片区2 客户2 1北京分公司 北京经营部 片区2 客户2 1北京分公司 其他经营部 片区1 客户1 1北京分公司 其他经营部 片区1 客户1 1北京分公司 其他经营部 片区1 客户2 1北京分公司 其他经营部 片区1 客户2 1北京分公司 其他经营部 片区2 客户1 1北京分公司 其他经营部 片区2 客户1 1北京分公司 其他经营部 片区2 客户2 1北京分公司 其他经营部 片区2 客户2 1create table t_sales(subcompany varchar2(40),branch varchar2(40),region varchar2(40),customer varchar2(40),sale_qty numeric(18,4));comment on table t_sales is ’销售表,分析函数测试’;comment on column t_sales.subcompany is ’分公司’;comment on column t_sales.branch is ’经营部’;comment on column t_sales.region is ’片区’;comment on column t_sales.customer is ’客户’;comment on column t_sales.sale_qty is ’销售数量’;2,问题提出现在要求给出销售汇总报表,报表中需要提供的数据包括客户汇总,和客户在其上级机构中的销售比例。Subcompany Branch Region Customer Sale_qty Rate北京分公司 北京经营部 片区1 客户1 2 50%北京分公司 北京经营部 片区1 客户2 2 50%北京分公司 北京经营部 片区1 小计 4 50%北京分公司 北京经营部 片区2 客户1 2 50%北京分公司 北京经营部 片区2 客户2 2 50%北京分公司 北京经营部 片区2 小计 4 50%北京分公司 北京经营部 小计 小计 8 50%北京分公司 北京经营部 片区1 客户1 2 50%北京分公司 北京经营部 片区1 客户2 2 50%北京分公司 北京经营部 片区1 小计 4 50%北京分公司 北京经营部 片区2 客户1 2 50%北京分公司 北京经营部 片区2 客户2 2 50%北京分公司 北京经营部 片区2 小计 4 50%北京分公司 北京经营部 小计 小计 8 50%北京分公司 小计 小计 小计 16 100%3,解决方案(方案1)首先我们可以使用oracle对group by 的扩展功能rollup得到如下的聚合汇总结果。select subcompany,branch,region,customer,sum(sale_qty) sale_qty from t_sales group by rollup(subcompany,branch,region,customer);Subcompany Branch Region Customer Sale_qty北京分公司 北京经营部 片区1 客户1 2北京分公司 北京经营部 片区1 客户2 2北京分公司 北京经营部 片区1 4北京分公司 北京经营部 片区2 客户1 2北京分公司 北京经营部 片区2 客户2 2北京分公司 北京经营部 片区2 4北京分公司 北京经营部 8北京分公司 其他经营部 片区1 客户1 2北京分公司 其他经营部 片区1 客户2 2北京分公司 其他经营部 片区1 4北京分公司 其他经营部 片区2 客户1 2北京分公司 其他经营部 片区2 客户2 2北京分公司 其他经营部 片区2 4北京分公司 其他经营部 8北京分公司 16 16分析上面的临时结果,我们看到:明细到客户的汇总信息,其除数为当前的sum(sale_qty),被除数应该是到片区的小计信息。明细到片区的汇总信息,其除数为片区的sum(sale_qty),被除数为聚合到经营部的汇总数据。。。。考虑到上述因素,我们可以使用oracle的开窗函数over,将数据定位到我们需要定位的记录。如下代码中,我们利用开窗函数over直接将数据定位到其上次的小计位置。over(partition by decode(f_branch, 1, null, subcompany), decode(f_branch, 1, null, decode(f_region, 1, null, branch)), decode(f_branch, 1, null, decode(f_region, 1, null, decode(f_customer, 1, null, region))), null)经整理后的查询语句如下。select subcompany, decode(f_branch, 1,subcompany||’(С¼Æ)’, branch), decode(f_region,1,branch||’(С¼Æ)’,region), decode(f_customer,1,region||’(С¼Æ)’, customer), sale_qty, trim(to_char(round(sale_qty/ sum(sale_qty) over(partition by decode(f_branch, 1, null, subcompany), decode(f_branch, 1, null, decode(f_region, 1, null, branch)), decode(f_branch, 1, null, decode(f_region, 1, null, decode(f_customer, 1, null, region))), null),2) *100,99990.99)) from (select grouping(branch) f_branch, grouping(region) f_region, grouping(customer) f_customer, subcompany, branch, region, customer, sum(sale_qty) sale_qty from t_sales group by subcompany, rollup(branch, region, customer))Subcompany Branch Region Customer Sale_qty Rate北京分公司 北京经营部 片区1 客户1 2 50.00北京分公司 北京经营部 片区1 客户2 2 50.00北京分公司 北京经营部 片区2 客户1 2 50.00北京分公司 北京经营部 片区2 客户2 2 50.00北京分公司 北京经营部 片区1 片区1(小计) 4 50.00北京分公司 北京经营部 片区2 片区2(小计) 4 50.00北京分公司 其他经营部 片区1 客户1 2 50.00北京分公司 其他经营部 片区1 客户2 2 50.00北京分公司 其他经营部 片区2 客户1 2 50.00北京分公司 其他经营部 片区2 客户2 2 50.00北京分公司 其他经营部 片区1 片区1(小计) 4 50.00北京分公司 其他经营部 片区2 片区2(小计) 4 50.00北京分公司 北京经营部 北京经营部(小计) (小计) 8 50.00北京分公司 其他经营部 其他经营部(小计) (小计) 8 50.00北京分公司 北京分公司(小计) (小计) (小计) 16 100.00北京分公司 北京经营部 片区1 客户1 2 50.004,可能的另外一种解决方式(方案2)select subcompany, decode(f_branch, 1,subcompany||’(С¼Æ)’, branch), decode(f_region,1,branch||’(С¼Æ)’,region), decode(f_customer,1,region||’(С¼Æ)’, customer), sale_qty, /* trim(to_char(round(sale_qty/*/ decode(f_branch+f_region+f_customer, 0, (sum(sale_qty) over(partition by subcompany,branch,region))/2, 1, (sum(sale_qty) over(partition by subcompany,branch))/3, 2, (sum(sale_qty) over(partition by subcompany))/4 , sum(sale_qty) over()/4 )/* ,2) *100,99990.99))*/ from (select grouping(branch) f_branch, grouping(region) f_region, grouping(customer) f_customer, subcompany, branch, region, customer, sum(sale_qty) sale_qty from t_sales group by subcompany, rollup(branch, region, customer))在上面的解决方式中,最大的问题在于开窗函数过大。导致每次计算涉及到的行数过多,影响到执行的速度和效率。并且需要额外的计算处理清除多余叠加进去的数值 。)

sql语句的几个常用函数总结

聚合函数max() count() sum() min()开窗函数row_number(),rank()时间函数convert(),adatediff(week,,getdate())

sparksql开窗函数有哪些

这个问题问的有些看不懂 Row_number()是SQL2005里的开窗函数 前台使用什么语言并不影响sql返回的执行结果 楼主既然不要写sql方式那么是会用这个函数的 那为什么还要提问呢。。。

oracle中的over函数怎么用的,什么意思

over函数是oracle中的分析函数,分析函数是对行集组进行聚合计算,但是不像普通聚合仗函数那样每组只返回一个值,分析函数可以为每组返回多个值。

使用方法为:over(partition by排 列名1 order by 列名2 ),括号中的两个关键词partition by 和order by 可以只出现一个。over() 前面是一个函数,如果是聚合函数,那么order by 不能一起使用。

扩展资料

在SQL语句中,很多查询语句需要进行GROUP BY分组汇总,但是一旦经过分组,SELECT返回的记录孢数就会减少。为了保留所有原始行记录,并且仍可以进行分组数据分析,分析函数应运而生。

oracle数据库函数,分析函数用于为行定义一个窗口,对一组值进行操作,不需要使用GROUP BY子句对数据进行分组,能够在同一行中同时返回基础行的列和聚合列。

RANK()也为每一组的行生成一个序号,与ROW_NUMBER()不同的是如果按照ORDER BY的排序,如果有相同的值会生成相同的序号,并且接下来的序号是不连序的。例如两个相同的行生成序号3,那么接下来会生成序号。

DENSE_RANK()和RANK()类似,不同的是如果有相同的序号,那么接下来的序号不会间断。也就是说如果两个相同的行生成序号,那么接下来生成的序号还是。

参考资料来源:百度百科-分析函数

SQL Server中的开窗函数是什么?sparksql 开窗函数怎么用

本文编辑:admin

更多文章:


vue的路由守卫有哪些?vue路由配置

本文目录vue的路由守卫有哪些vue路由配置vue中的路由是什么意思vue中的路由怎么设置vue的路由守卫有哪些路由守卫分为以下几种全局守卫:beforeEach(是路由的钩子函数,在每一个路由跳转之前执行,常做登录权限判断,参数:to,f

2025年3月4日 14:10

想学单片机,谁能给一些比较完整的教程吗?单片机教程

本文目录想学单片机,谁能给一些比较完整的教程吗单片机教程单片机最小系统焊接教程单片机教程一般哪里比较好找51单片机红外避障小车教程新概念51单片机C语言教程的内容简介初学51单片机有什么好的视频教程,大神推荐一下想学习51单片机 有什么好得

2025年3月22日 12:40

street的中文意思(英语单词street中文是什么)

本文目录英语单词street中文是什么road和street是什么区别street用中文反译英语单词street中文是什么街道:城市或城镇中的公用路或大道,通常有一或多条人行道马路:被认为距离人行道的这样的公用路:街道:两侧有房屋或建筑物的

2025年2月21日 16:00

settimeoutinterval(settimeout和setinterval)

本文目录settimeout和setinterval如何使用定时器settimeout,setInterval执行能传递参数的函数settimeout和setinterval的区别请简述一下settimeout和setinterval的区别

2025年3月28日 11:30

pickle怎么读(pickle是开音节还是闭音节)

本文目录pickle是开音节还是闭音节python里pickle是什么意思各种蔬菜的英文怎么读(就嘴巴读的)pickle是开音节还是闭音节开音节闭音节不是那么定义的. 开音节是以元音结尾的音节,闭音节是以辅音结尾的. 象take一类的,

2025年2月13日 08:50

查看mac地址表(linux 系统怎么看mac地址表)

本文目录linux 系统怎么看mac地址表电脑查看mac地址命令怎么查看自己的mac地址linux 系统怎么看mac地址表看mac地址的步骤如下:1、首先要做的是按Ctrl + Alt + T快捷键打开终端。2、然后紧接着在终端中输入ifc

2025年3月7日 16:20

vmware虚拟机安装win10(用VMware10装win10,三次都卡在这里,如何解决)

本文目录用VMware10装win10,三次都卡在这里,如何解决怎么用vm虚拟机安装win10vm虚拟机如何安装win10如何在虚拟机上安装win10用VMware10装win10,三次都卡在这里,如何解决虚拟内存不够,版本问题 1. 关闭

2025年2月9日 14:30

java算法书籍推荐(零基础学习java需要多长时间,有没有推荐的课程或者书)

本文目录零基础学习java需要多长时间,有没有推荐的课程或者书想学习java,有没有经典的书籍推荐零基础学习java需要多长时间,有没有推荐的课程或者书零基础学习java可按照这份大纲来进行学习第一阶段:Java专业基础课程阶段目标:1.

2025年3月12日 15:30

proofs(proof与prove的区别)

本文目录proof与prove的区别SCI里的galley proofs是什么意思proof是什么意思proof与prove的区别proof和prove的区别:1、具体含义不同proof的含义侧重于防 ... 的;耐 ... 的,prove

2025年3月11日 13:40

privilege文学(谁能帮我找篇外国文学名著的读后感..)

本文目录谁能帮我找篇外国文学名著的读后感..“凡尔赛文学“到底是什么梗谁能帮我找篇外国文学名著的读后感..  小王子英文读后感  the Little Prince – A Tale of Love and Life  Title: the

2025年4月7日 11:20

sql2014官网下载(sql 2014 组合帮助集合 在哪里打开在哪下载)

本文目录sql 2014 组合帮助集合 在哪里打开在哪下载SQL 2014怎么安装SQL server 2014 没有本地服务器sqlserver2014应该下载哪个版本sql server2014下载怎么闪一下就没有了谁能给个sql201

2025年3月3日 17:10

如何搭建自己CDN服务器?创新型cdn已就位,企业还需要自建cdn吗

本文目录如何搭建自己CDN服务器创新型cdn已就位,企业还需要自建cdn吗怎么创建cdn主机什么是cdn服务器如何搭建cdn服务器如何自己搭建CDN服务器做防御服务器 集群 和自建cdn的区别如何搭建自己CDN服务器如果没有备案,就别做了,

2025年3月17日 08:50

format long(matlab中format long函数详细用法)

本文目录matlab中format long函数详细用法MATLAB中定义输出格式的format命令中,short、long、rat对应什么样的输出格matlab里,format short g不是从format short和format

2025年3月29日 10:00

prcs6是不是太老了(prcs6版本算低吗)

本文目录prcs6版本算低吗PRcs6与PRcc有什么区别prcs6版本算低吗算。Adobe Premiere Pro,简称Pr,是由Adobe公司开发的一款视频软件。 常用的版本有CS4、CS5、CS6、CC 2014、CC 2015、C

2025年3月7日 06:00

switch什么意思sm(switch是什么)

本文目录switch是什么到底什么是Switchswitch是什么Switch一般是指Nintendo Switch,是日本任天堂公司出品的电子游戏机。Switch拥有可拆卸控制器和可分离式主机,游戏载体使用了专用卡带,主机处理器使用了英伟

2025年2月24日 00:10

sd卡受损怎么修复(相机sd卡受损怎么修复)

本文目录相机sd卡受损怎么修复如何修复受损的SD卡相机sd卡受损怎么修复当SD卡受损,卡内数据丢失后,用户可以使用easyrecovery软件来恢复数据。一般情况下,当SD卡损坏后,在出现是否格式化时,用户一定要选择:否,这样更能保证数据恢

2025年3月7日 21:40

dominant名词(名词(n.)→形容词(adj.) 一些以-ce结尾的名词,把-ce改为-t变成形容词 例如:)

本文目录名词(n.)→形容词(adj.) 一些以-ce结尾的名词,把-ce改为-t变成形容词 例如:predominant和dominant的区别dominance和domination的区别是什么占优策略的名词解释名词(n.)→形容词(a

2025年3月19日 23:40

爬虫代理哪个好用?怎么用代理ip地址进行网页爬取

本文目录爬虫代理哪个好用怎么用代理ip地址进行网页爬取爬虫代理哪个好用爬虫使用代理i爬是非常常见的一种形式,因为有反爬虫的限制,我们要避免这种行为给我代理的工作压力。在选代理ip的时候可以通过以下几个方面进行。1、IP池大,都知道网络爬虫用

2025年4月1日 20:00

ubuntu怎么安装第三方软件(ubuntu14.04怎么安装)

本文目录ubuntu14.04怎么安装ubuntu 14.04 怎么安装geant4 10.02Ubuntu的软件都安装在什么地方新手求助,各种方法安装Ubuntuubuntu14.04怎么安装方法/步骤在BIOS设置设置光驱启动(本人是用

2025年3月3日 15:30

discuz论坛安装步骤(Linux下如何安装Discuz)

本文目录Linux下如何安装Discuz如何在本地搭建Discuz论坛如何在本地服务器上搭建discuz论坛discuz论坛安装显示index of/installDiscuz和X-Space如何安装如何用discuz,搭建付费的源码社区如

2025年4月3日 18:50

近期文章

本站热文

2025-02-22 17:40:03 浏览:18
2025-02-10 23:40:06 浏览:7
2025-02-14 06:00:02 浏览:6
标签列表

热门搜索