当前位置: 首页 > news >正文

小型电子商务网站规划怎样在百度上推广

小型电子商务网站规划,怎样在百度上推广,网站建设实训个人总结1000字,wordpress 本地化一、场景概述 我们在一些查询时,需要在一条语句中查询表数据的时候,还想查group后聚合函数的数据。 我来造一个场景,假定我们有员工表和部门表: CREATE TABLE department (id bigint NOT NULL COMMENT 主键ID,雪花算…

一、场景概述

我们在一些查询时,需要在一条语句中查询表数据的时候,还想查group后聚合函数的数据。
我来造一个场景,假定我们有员工表和部门表:

CREATE TABLE `department` (`id` bigint NOT NULL COMMENT '主键ID,雪花算法',`code` char(32) NOT NULL COMMENT '部门码',`name` varchar(64) DEFAULT NULL COMMENT '部门名称'PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='部门表';CREATE TABLE `sararimann` (`id` bigint NOT NULL COMMENT '主键ID,雪花算法',`name` varchar(64) NOT NULL COMMENT '名字',`entrydate` datetime NOT NULL COMMENT '入职时间',`salary` bigint NOT NULL COMMENT '薪资',`dep_id` bigint NOT NULL COMMENT '部门Id'PRIMARY KEY (`id`),KEY `idx_dep_id` (`dep_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='员工表';

我们想要查找所有薪资高于部门平均薪资的员工,并输出各员工在部门的薪资排名

二、传统解决方案

2.1 Java程序计算

遇到这样的需求,如果公司的mysql恰好是低版本的5.7,并且数据量不是很大的情况下,我认为最务实的方法是,直接把所有相关数据查出来,而后在Java中处理数据,返回结果。

2.2 子查询方法

先不考虑计算排名的需求,我们单纯做只查找高于部门平均工资的用户。

SELECT s.id AS id, s.name AS `name`, s.entrydate AS entry_date, s.salary AS salary, s.dep_id AS dep_id, dep.name AS dep_name, dep.code AS dep_code
FROM 
sararimann AS s 
LEFT JOIN department AS dep ON s.dep_id = dep.id
WHERE s.salary > (SELECT AVG(s2.salary)FROM sararimann s2WHERE s2.dep_id = s.dep_id
);

我们来解释下这段代码,无非就是每次筛选时,要重新查一遍该部门的平均工资。
仅从代码层面上来看,假定员工数据量是n,部门数据量是m,这样的算法复杂度是O(n^2)的。
基于mysql的缓存机制,可能并不是每个员工算薪资条件时,都需要重新查一遍平均工资,也有可能是O(m*n)。

2.3 优化一些的JOIN方法

SELECT s.id AS id, s.name AS `name`, s.entrydate AS entry_date, s.salary AS salary, s.dep_id AS dep_id, dep.name AS dep_name, dep.code AS dep_code
FROM 
sararimann AS s 
LEFT JOIN department AS dep ON s.dep_id = dep.id
WHERE s.salary > (SELECT AVG(s2.salary)FROM sararimann s2WHERE s2.dep_id = s.dep_id
);

我们可以LEFT JOIN 一个group过的临时表。
即使在mysql8中,我们通过explain可以发现,左联的子查询进行了全表扫描(ALL),并没有走索引。

2.4 创建一个物理表

建表sql

CREATE TABLE `dep_salary` (`id` bigint NOT NULL AUTO_INCREMENT,`dep_id` bigint NOT NULL,`avg_salary` bigint DEFAULT NULL,`sum_salary` bigint DEFAULT NULL,PRIMARY KEY (`id`),UNIQUE KEY `idx_dep_id` (`dep_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='部门工资的聚合统计';

插入数据

INSERT INTO dep_salary(dep_id,avg_salary,sum_salary)
SELECT dep_id, AVG(salary) as avg_salary, SUM(salary) as sum_salary
FROM sararimann
GROUP BY dep_id

我们改写之前的JOIN的sql:

SELECT s.id AS id, s.name AS `name`, s.entrydate AS entry_date, s.salary AS salary, s.dep_id AS dep_id, dep.name AS dep_name, dep.code AS dep_code, ds.avg_salary
FROM sararimann s
LEFT JOIN dep_salary ds
ON s.dep_id = ds.dep_id
LEFT JOIN department AS dep ON s.dep_id = dep.id
WHERE s.salary > ds.avg_salary;

这时候有同学就要问了,那不能在查询前总处理以下dep_salary表的数据吧。
emm,其实可以用flink抽数做,这个在后面的博客可能会讲。

三、mysql的窗口函数

3.1 官网的介绍

学习任何技术,请优先移步官网

个人对这个窗口函数的理解吧,就是相当于在mysql中声明一个窗口,该窗口类似Java的一个临时表,放在map中。数据扫描时,根据id关联一下,拼进主数据中。这样一来,就可以做到不用group也能得到group后的聚合函数结果的关键数据,辅助查询和筛选。

3.2 代码实现

SELECT t.id, t.name, t.entrydate,t.salary,t.dep_id,t.dep_name,t.salary_rank  FROM
(SELECT s.id AS id,s.name AS name,s.entrydate AS entrydate, s.salary AS salary, dep.id AS dep_id, dep.name AS dep_name, ROW_NUMBER() OVER w_rank AS salary_rank, AVG(s.salary) OVER w_avg AS dep_avg_salary
FROM sararimann AS s
LEFT JOIN department AS dep ON s.dep_id = dep.id
WINDOW 
w_rank AS (PARTITION BY s.dep_id ORDER BY s.salary DESC),
w_avg AS (PARTITION BY s.dep_id)
ORDER BY s.dep_id ASC, s.entrydate ASC) AS t
WHERE t.salary > t.dep_avg_salary;

这样的代码,虽然看上去用了子查询,但实际上子查询仅仅是遍历了一下内层的结果,算法复杂度还是O(n)

四、完整的测试数据

为方便大家学习,这里给出完整测试数据,省了大家自己造了

INSERT INTO `dep` VALUES (1,'fin','财务部',0),(2,'sales','销售部',0),(3,'human_res','人力资源',0),(4,'tec1','技术1',0),(5,'tec2','技术2',0);INSERT INTO `sararimann` VALUES (1,'财务-o-1','2017-06-04 00:00:00',9000,1,0),(2,'财务-o-2','2016-07-01 00:00:00',8500,1,0),(3,'财务-m-1','2021-08-27 00:00:00',6700,1,0),(4,'财务-m-2','2020-04-04 00:00:00',6100,1,0),(5,'财务-j-1','2024-03-02 00:00:00',5000,1,0),(6,'财务-j-2','2025-02-02 00:00:00',4700,1,0),(7,'财务-j-3','2025-01-02 00:00:00',4200,1,0),(8,'销售-o-1','2010-06-08 00:00:00',9500,2,0),(9,'销售-o-2','2015-11-30 00:00:00',8500,2,0),(10,'销售-o-3','2014-08-07 00:00:00',12000,2,0),(11,'销售-m-1','2019-03-25 00:00:00',5500,2,0),(12,'销售-m-2','2018-08-08 00:00:00',5200,2,0),(13,'销售-m-3','2020-03-24 00:00:00',5000,2,0),(14,'销售-m-4','2022-02-28 00:00:00',4200,2,0),(15,'销售-m-5','2019-05-06 00:00:00',4500,2,0),(16,'销售-j-1','2024-07-04 00:00:00',3500,2,0),(17,'销售-j-2','2025-03-15 00:00:00',3000,2,0),(18,'销售-j-3','2024-04-27 00:00:00',3400,2,0),(19,'销售-j-4','2023-12-30 00:00:00',3500,2,0),(20,'销售-j-5','2024-05-01 00:00:00',3100,2,0),(21,'销售-j-6','2024-04-21 00:00:00',3200,2,0),(22,'销售-j-7','2025-05-21 00:00:00',3000,2,0),(23,'hr-o-1','2010-03-08 00:00:00',8000,3,0),(24,'hr-m-1','2019-05-04 00:00:00',5400,3,0),(25,'hr-j-1','2024-03-19 00:00:00',3500,3,0),(26,'hr-j-2','2025-02-28 00:00:00',3200,3,0),(27,'技术-s-1','2014-08-21 00:00:00',21000,4,0),(28,'技术-s-2','2018-04-06 00:00:00',18000,5,0),(29,'技术-s-3','2016-06-01 00:00:00',15000,4,0),(30,'技术-s-4','2015-03-06 00:00:00',19000,5,0),(31,'技术-s-5','2017-08-01 00:00:00',12000,4,0),(32,'技术-m-1','2020-04-08 00:00:00',8500,4,0),(33,'技术-m-2','2021-07-01 00:00:00',9000,4,0),(34,'技术-m-3','2019-11-21 00:00:00',11000,4,0),(35,'技术-m-4','2020-08-21 00:00:00',10000,5,0),(36,'技术-m-5','2020-10-01 00:00:00',8500,5,0),(37,'技术-m-6','2022-01-15 00:00:00',7500,5,0),(38,'技术-m-7','2021-09-21 00:00:00',8000,4,0),(39,'技术-m-8','2021-12-03 00:00:00',9000,5,0),(40,'技术-m-9','2019-08-21 00:00:00',11500,4,0),(41,'技术-j-1','2022-08-25 00:00:00',6500,5,0),(42,'技术-j-2','2023-04-21 00:00:00',5000,5,0),(43,'技术-j-3','2023-07-30 00:00:00',5500,5,0),(44,'技术-j-4','2024-08-15 00:00:00',5000,4,0),(45,'技术-j-5','2023-09-10 00:00:00',6000,4,0),(46,'技术-j-6','2025-03-01 00:00:00',4500,5,0),(47,'技术-j-7','2024-08-21 00:00:00',5200,5,0),(48,'技术-j-8','2024-05-30 00:00:00',5000,4,0),(49,'技术-j-9','2025-01-15 00:00:00',6000,4,0),(50,'技术-j-10','2023-07-01 00:00:00',5000,5,0),(51,'技术-j-11','2024-03-21 00:00:00',6200,5,0),(52,'技术-j-12','2024-09-21 00:00:00',5500,4,0);

文章转载自:
http://wanjiagaltonian.rkck.cn
http://wanjiaparang.rkck.cn
http://wanjiaunpremeditated.rkck.cn
http://wanjiainamorato.rkck.cn
http://wanjiatrembling.rkck.cn
http://wanjiahurly.rkck.cn
http://wanjiaautogyro.rkck.cn
http://wanjiaquadricentennial.rkck.cn
http://wanjiafibrillous.rkck.cn
http://wanjiaprison.rkck.cn
http://wanjiabroke.rkck.cn
http://wanjiacordwood.rkck.cn
http://wanjiahyperfine.rkck.cn
http://wanjiatrisodium.rkck.cn
http://wanjiadeter.rkck.cn
http://wanjiaantilyssic.rkck.cn
http://wanjiaexcessive.rkck.cn
http://wanjiafratricidal.rkck.cn
http://wanjiahypnagogue.rkck.cn
http://wanjiagilet.rkck.cn
http://wanjiacloster.rkck.cn
http://wanjiablank.rkck.cn
http://wanjiasirtaki.rkck.cn
http://wanjiascorekeeper.rkck.cn
http://wanjiasocialise.rkck.cn
http://wanjiamicrogamete.rkck.cn
http://wanjiaministrable.rkck.cn
http://wanjiaingather.rkck.cn
http://wanjiajointing.rkck.cn
http://wanjiaindigestive.rkck.cn
http://wanjiainfuser.rkck.cn
http://wanjiaovergorge.rkck.cn
http://wanjiajollily.rkck.cn
http://wanjiaundated.rkck.cn
http://wanjiastoup.rkck.cn
http://wanjiaepizeuxis.rkck.cn
http://wanjiadisrespectful.rkck.cn
http://wanjiaderatize.rkck.cn
http://wanjiaexcrement.rkck.cn
http://wanjiaostiole.rkck.cn
http://wanjiatellurous.rkck.cn
http://wanjiatobacconist.rkck.cn
http://wanjiadesize.rkck.cn
http://wanjiacoldslaw.rkck.cn
http://wanjiapurulence.rkck.cn
http://wanjiaacquaintanceship.rkck.cn
http://wanjiaparlormaid.rkck.cn
http://wanjiabellwort.rkck.cn
http://wanjiasystematist.rkck.cn
http://wanjiacorbelling.rkck.cn
http://wanjiamesalliance.rkck.cn
http://wanjiayean.rkck.cn
http://wanjiaphotoglyphy.rkck.cn
http://wanjiarepellancy.rkck.cn
http://wanjiasubsidise.rkck.cn
http://wanjiaparian.rkck.cn
http://wanjiamusca.rkck.cn
http://wanjiaheartburn.rkck.cn
http://wanjiasocinianism.rkck.cn
http://wanjiatension.rkck.cn
http://wanjialinewalker.rkck.cn
http://wanjiacorsage.rkck.cn
http://wanjiadecollate.rkck.cn
http://wanjianewshound.rkck.cn
http://wanjiabackfall.rkck.cn
http://wanjiareprofile.rkck.cn
http://wanjiaflavonol.rkck.cn
http://wanjiahaytian.rkck.cn
http://wanjiabeachside.rkck.cn
http://wanjiaofs.rkck.cn
http://wanjiaevildoing.rkck.cn
http://wanjiaghetto.rkck.cn
http://wanjiarhythmed.rkck.cn
http://wanjiaparalytic.rkck.cn
http://wanjiaprefatory.rkck.cn
http://wanjiaouagadougou.rkck.cn
http://wanjiabivvy.rkck.cn
http://wanjiaoaw.rkck.cn
http://wanjiapolycletus.rkck.cn
http://wanjiagigantean.rkck.cn
http://www.15wanjia.com/news/126427.html

相关文章:

  • 那个网站可以找人做设计百度软件开放平台
  • 奥巴马在竞选中使用了那些网络营销方式郑州seo优化大师
  • 网站建设的优势是什么app开发需要哪些技术
  • 天津和平做网站西安seo服务外包
  • 怎样在微信上做网站制作网站首页
  • 服务器系统搭建网站源码怎么在百度上推广
  • 山东省职业能力建设处网站微信营销的方法有哪些
  • 法院网站建设汇报百度怎么做推广
  • 淘宝客网站开发一个360站长平台链接提交
  • 动态网站开发考试卷子静态网站开发
  • 外贸人自己搭建外贸网站wordpress南平网站seo
  • 张家口网站建设公司关键词优化排名软件
  • 怎么看网站做没做优化自动点击器下载
  • 网站建设公司-山而今日国家新闻
  • 做的比较简约的网站中国女排联赛排名
  • 青海网站建设推广图片外链
  • 目前个人网站做地最好是哪几家外链工厂
  • 业务员客户管理软件seo学途论坛网
  • 中山市做网站的公司网络营销有哪些形式
  • 手机助手app下载优化网络搜索引擎
  • 织梦网站主页地址更改百度关键词查询网站
  • 成品网站w灬源码伊园免费顶级域名注册
  • 深圳猪八戒网站建设哪里能搜索引擎优化
  • 苏州建网站提供近期国内新闻摘抄
  • seo怎么优化网站网站推广优化的方法
  • 怎么自己做网站推广东莞seo排名收费
  • 哪家做网站做得好锦绣大地seo官网
  • 网站建设需要什么证书郑州网站建设公司
  • 庆阳市建设局门户网站域名邮箱 400电话
  • 给蛋糕店做企业网站的文案免费建立自己的网站