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

网站被k查询wordpress文章字数

网站被k查询,wordpress文章字数,电子商务网站建设c,上海网站建设公司 红威1 推荐工具 在线运行SQL 2 阿里一面 3 百度一面 4 一道百度校招二面sql题 力推一个在线运行sql的网站#xff1a;https://www.json.cn/runcode/run_sql/ 有一张学生表stu#xff0c;包含sid, std_name,course_name,score等几个字段#xff0c;数据如下#xff0c;要求…1 推荐工具 在线运行SQL 2 阿里一面 3 百度一面 4 一道百度校招二面sql题 力推一个在线运行sql的网站https://www.json.cn/runcode/run_sql/ 有一张学生表stu包含sid, std_name,course_name,score等几个字段数据如下要求查询出每门课程排名前三名的学生记录 /*sid, std_name,course_name,score1 小明 语文 902 小明 语文 923 小明 语文 934 小明 语文 945 小泓 数学 926 小泓 英文 937 小刚 科学 94语文 94-93-92数学*/CREATE TABLE stu (sid int,std_name varchar(255),course_name varchar(255),score int );INSERT INTO stu VALUES (1, Tom, Chinese, 90); INSERT INTO stu VALUES (2, Tom2, Chinese, 91); INSERT INTO stu VALUES (3, Tom3, Chinese, 92); INSERT INTO stu VALUES (4, Tom4, Chinese, 93);INSERT INTO stu VALUES (5, Tom5, English, 93); INSERT INTO stu VALUES (6, Tom6, English, 94);INSERT INTO stu VALUES (7, Tom7, Math, 91);4.1 方法一我写的面试官不是很认可使用group_concat函数(缺点是只能限制拼接后的最长字符串不能限制拼接的元素数量) 【SQL学习笔记一】Group_Concat() // 先堆 // select course_name,group_concat(std_name,-),group_concat(score, -) from (select * from stu order by score desc) as tmp group by course_name// 协会站点入会当会员//表 /*学生表、部门表、学生-部门表、新闻表*/// (select * from stu order by course_name desc, score desc) as tmp 4.2 方法二使用子查询 SELECT s1.sid, s1.std_name, s1.course_name, s1.score FROM stu s1 WHERE (SELECT COUNT(DISTINCT s2.score) FROM stu s2 WHERE s2.course_name s1.course_name AND s2.score s1.score ) 3 ORDER BY s1.course_name, s1.score DESC;4.2.1 sql语句解析 当然可以。这是一种子查询的方法它使用自连接来获取每个课程的前三名学生的成绩。以下是对这个查询的详细解释 主查询 主查询是对stu表的查询它选取了学生的sid、std_name、course_name和score。 SELECT s1.sid, s1.std_name, s1.course_name, s1.score FROM stu s1子查询 对于主查询中的每个学生或记录都会运行一次子查询。子查询的目的是计算当前学生的成绩在其课程中的排名。 SELECT COUNT(DISTINCT s2.score) FROM stu s2 WHERE s2.course_name s1.course_name AND s2.score s1.score这里我们正在数那些在同一课程中但成绩高于当前学生s1的其他学生s2的数量。因此如果子查询的结果为0这意味着当前学生是这门课的第一名如果结果为1这意味着当前学生是第二名以此类推。 WHERE条件 WHERE (... ) 3该条件确保我们只选取排名在前三名的学生。只有当子查询的结果为0、1或2时即该学生的成绩在其课程中排名前三该学生的记录才会被选中。 ORDER BY子句 ORDER BY s1.course_name, s1.score DESC;这个子句首先按课程名称对结果进行排序然后在每个课程内部按学生的成绩降序排列。 简单来说这个查询为每个学生计算他们在自己的课程中的成绩排名然后选取排名在前三名的学生。 4.2.2 子查询的使用位置 子查询并不仅限于WHERE子句中。它们可以出现在以下位置 SELECT子句中作为派生列。FROM子句中作为派生表。WHERE子句中与操作符如IN, EXISTS一起使用。HAVING子句中。JOIN操作中。 4.2.3 子查询、EXISTS和IN的关系 我的笔记(Sql语句中IN和exists的区别及应用) 子查询与IN: 当你需要比较一个值是否在一组值中时可以使用子查询与IN结合。 SELECT employee_id FROM employees WHERE department_id IN (SELECT department_id FROM departments WHERE location New York); 子查询与EXISTS: 当你需要检查一个子集是否存在时可以使用EXISTS。它是一个半关联操作通常与关联条件结合使用。 SELECT customer_id FROM customers c WHERE EXISTS (SELECT 1 FROM orders o WHERE o.customer_id c.customer_id); EXISTS通常更高效因为它在找到第一个匹配项后就会停止搜索。 N 和 EXISTS 的区别及应用场景 区别 如你所说IN和EXISTS关键字在执行查询时使用的策略是不同的。具体执行策略和数据库优化器的实现有关但大致的概念是 IN子查询首先被执行然后将得到的结果集返回给主查询之后主查询进行过滤。对于EXISTS子查询通常外层的每一行数据都会检查子查询是否存在满足条件的记录。 应用场景 IN更适合子查询返回的结果集小而主查询的数据集大并且具有适当的索引的场景。EXISTS在外部查询的数据集较小而子查询的数据集较大并且具有适当索引的情况下表现得更好。 关于效率 这两者之间没有固定的“哪个总是更快”的规则它取决于数据的特性和查询的具体情境。通常最佳的做法是编写两种查询并检查执行计划或实际执行时间。 4.3 方法三使用窗口函数 如上文中的ROW_NUMBER()方法(能够保证强排名如果两个人并列第三只返回其中number号靠前的那一个)。除此之外你还可以使用RANK()【并列的前三名都会返回】或DENSE_RANK()。 WITH RankedScores AS (SELECT sid,std_name,course_name,score,ROW_NUMBER() OVER(PARTITION BY course_name ORDER BY score DESC) AS rankingFROM stu ) SELECT sid,std_name,course_name,score FROM RankedScores WHERE ranking 3;4.3.1 什么是窗口函数 窗口函数是SQL的高级功能允许在结果集的一组行上执行计算这组行与当前行有某种关系。换句话说窗口函数为当前行定义了一个窗口并根据这个窗口计算值。这些函数与普通的聚合函数如SUM、AVG不同因为窗口函数不会减少结果集的行数它们为每一行提供计算结果。 窗口函数通常与OVER子句一起使用OVER子句定义了为每一行计算函数值的窗口。 4.3.2 解释 WITH RankedScores AS ... 这是一个常用的SQL特性叫做公共表表达式 (Common Table Expression, 简称CTE)。CTE为查询提供了一种定义临时结果集的方式这个结果集只存在查询的执行期间并且它可以在之后的查询中引用。 在给定的查询中CTE RankedScores为stu表中的每个学生按照course_name进行分区并为每个学生计算一个名次ranking名次基于他们的score从高到低排序。 解释CTE中的查询 RANK(): 是一个窗口函数为每一行提供一个名次。OVER(PARTITION BY course_name ORDER BY score DESC): 定义了一个窗口。这里PARTITION BY course_name意味着为每门课程单独计算名次。ORDER BY score DESC意味着名次是基于分数从高到低排序的。AS ranking: 将窗口函数的结果命名为ranking。 所以这个CTE为每位学生提供了一个名次基于他们在特定课程中的分数。之后的主查询从这个CTE中选择名次在前三的学生。 4.3.3 常见的窗口函数 ROW_NUMBER(): 对每个窗口中的行进行编号。RANK(): 在窗口内为行分配一个唯一的排名排名并列的情况下会留下空缺。DENSE_RANK(): 与RANK()相似但不会在排名中留下空缺。NTILE(n): 将窗口内的行分为n个大致相等的部分并为每部分的行提供一个编号。LAG(column, n): 返回当前行前n行的值。LEAD(column, n): 返回当前行后n行的值。FIRST_VALUE(column): 返回窗口内的第一个值。LAST_VALUE(column): 返回窗口内的最后一个值。SUM(column), AVG(column), MIN(column), MAX(column): 在窗口内计算总和、平均值、最小值和最大值。 4.3.4 举一个例子告诉rank(), dense_rank()和row_number()等窗口函数的区别 1 rank() WITH RankedScores AS (SELECT sid,std_name,course_name,score,RANK() OVER(PARTITION BY course_name ORDER BY score DESC) AS rankingFROM stu ) SELECT sid,std_name,course_name,score,ranking FROM RankedScores WHERE ranking 3;查询结果 3|Tom3|Chinese|93|1 4|Tom4|Chinese|93|1 2|Tom2|Chinese|91|3 6|Tom6|English|94|1 5|Tom5|English|93|2 7|Tom7|Math|91|12 dense_rank() WITH RankedScores AS (SELECT sid,std_name,course_name,score,DENSE_RANK() OVER(PARTITION BY course_name ORDER BY score DESC) AS rankingFROM stu ) SELECT sid,std_name,course_name,score,ranking FROM RankedScores WHERE ranking 3;查询结果 3|Tom3|Chinese|93|1 4|Tom4|Chinese|93|1 2|Tom2|Chinese|91|2 1|Tom|Chinese|90|3 6|Tom6|English|94|1 5|Tom5|English|93|2 7|Tom7|Math|91|13 ROW_NUMBER() WITH RankedScores AS (SELECT sid,std_name,course_name,score,ROW_NUMBER() OVER(PARTITION BY course_name ORDER BY score DESC) AS rankingFROM stu ) SELECT sid,std_name,course_name,score,ranking FROM RankedScores WHERE ranking 3;3|Tom3|Chinese|93|1 4|Tom4|Chinese|93|2 2|Tom2|Chinese|91|3 6|Tom6|English|94|1 5|Tom5|English|93|2 7|Tom7|Math|91|14.3.5 SUM(column), AVG(column), MIN(column), MAX(column)这些函数是对窗口内所有的记录生效的吧 2 LAG(column, n) LEAD(column, n)和NTILE(n)分别给几个demo 是的SUM(column), AVG(column), MIN(column), MAX(column)这些函数都是对窗口内的所有记录生效的而具体的窗口范围由PARTITION BY和ORDER BY决定。 DEMO: LAG(column, n): 这个函数用于返回当前行上方n行的值。如果没有这么多行它将返回NULL。 SELECT column,LAG(column, 1) OVER (ORDER BY some_column) AS prev_value FROM table_name;这将给出当前行和前一行的值。 LEAD(column, n): 与LAG类似但返回当前行下方n行的值。 SELECT column,LEAD(column, 1) OVER (ORDER BY some_column) AS next_value FROM table_name;这将给出当前行和下一行的值。 NTILE(n): 这个函数用于将结果集分成n个大致相等的部分并为每部分的行分配一个编号。 SELECTcolumn,NTILE(4) OVER (ORDER BY some_column) AS quartile FROM table_name;这将为每行分配一个从1到4的值表示它在哪个四分位数中。 请注意这些DEMO只是基本用法的示例实际应用可能会更复杂取决于具体的数据和需求。 4.4 方法四在某些数据库如MySQL中可以使用用户定义的变量来计算每个课程的排名。 SET ranking 0; SET prev_course ; SELECT sid, std_name, course_name, score FROM (SELECT sid, std_name, course_name, score,ranking : IF(prev_course course_name, ranking 1, 1) AS ranking,prev_course : course_nameFROM stuORDER BY course_name, score DESC ) AS RankedScores WHERE ranking 3;4.4.1 解释一下用法 这个查询是使用MySQL的用户定义变量来实现学生的成绩排名功能。它的目标是为每门课程中的学生按分数降序排名并只选择排名前三的学生。 我来逐步解释这个查询 1. 设置用户定义变量 SET ranking 0; SET prev_course ;这里我们初始化两个用户定义变量 ranking用于存储当前学生的排名。prev_course用于存储上一行的课程名这样我们可以检查当前行的课程是否与上一行的课程相同。 2. 子查询 SELECT sid, std_name, course_name, score,ranking : IF(prev_course course_name, ranking 1, 1) AS ranking,prev_course : course_name FROM stu ORDER BY course_name, score DESC这个子查询做了以下几件事 首先它对结果集进行排序使得同一门课程的学生按其分数降序排列。使用IF函数来检查当前行的课程名是否与前一行的课程名相同。如果相同ranking加1如果不同ranking重置为1。更新prev_course为当前行的课程名。 3. 主查询 SELECT sid, std_name, course_name, score FROM ... AS RankedScores WHERE ranking 3;这个主查询简单地从子查询的结果中选择排名前三的学生记录。 总的来说这个查询使用MySQL的用户定义变量为每门课程的学生分数进行排名并只选择排名前三的记录。 5 MySQL 8的新特性 MySQL 8的新特性 MySQL 8在2018年发布并带来了许多新的特性和改进 数据字典事务性以前MySQL中的元数据存储在多个文件和非事务性表中。在MySQL 8.0中有了一个新的数据字典所有的元数据都存储在单独的事务性表中。 增强的UTF-8支持默认的字符集从latin1更改为utf8mb4支持更多的字符集如Emoji、各种符号等。 窗口函数这为SQL在MySQL中提供了标准的窗口函数如ROW_NUMBER(), LEAD(), LAG(),等等。 公共表表达式 (Common Table Expressions, CTEs)通过使用WITH子句MySQL 8.0开始支持CTEs。 原子DDL语句DDL操作如创建、更改、删除表或索引现在是原子的并完全支持事务。 角色支持MySQL 8.0添加了对SQL角色的原生支持。 性能模式一个新的性能查询工具用于监控服务器和查询的性能。 JSON增强对JSON数据类型的增强和改进。 优化器改进查询执行计划的改进、直方图的引入等。 其他安全、复制和性能的改进。 4.5 类似于这种难度的sql你还能再多出几个嘛 当然可以这里是一些类似难度的SQL题目以及它们的背景描述 获取每个员工的工资排名: 假设您有一个employees表格其中包含id, name, 和salary字段。您需要编写一个SQL查询来获取每个员工的工资排名不考虑并列情况。 查找顾客购买最多商品的日期: 假设您有一个orders表格其中包含id, customer_id, product_id, 和order_date字段。您的任务是确定哪一天有最多的不同客户下单。 查找没有订单的顾客: 假设您有两个表格customers和orders。您需要列出那些至今还没有下单的客户。 获取每个产品的总销售额: 您有一个products表和一个sales表。您需要为每种产品计算总销售额。 查找连续三天访问网站的用户: 您有一个user_visits表其中包含user_id和visit_date字段。您的任务是找出连续三天都访问网站的用户。 查找上一个月的最佳销售员: 您有一个sales表和一个employees表。您需要找出上个月销售额最高的员工。 这只是几个SQL难题的例子实际上有无数的可能性和场景您可以根据具体的数据模型和需求来定制。
http://www.zqtcl.cn/news/612312/

相关文章:

  • 精仿手表网站做网站为什么要做备案接入
  • 哈什么网一个网站做ppt清新区城乡建设局网站
  • 重庆专业网站建设首页排名网站模板广告去除
  • 河南省建设行业证书查询网站怎么用ps做网站首页背景图片
  • 如何取一个大气的名字的做网站青岛北方现货交易平台
  • 关于做书的网站购物网站建设资讯
  • 运营网站开发工作招聘做装修有什么好网站可以做
  • 免费自学平面设计的网站直播网站开发源码
  • 电子商务网站建设实践广州网站建设公司怎么选
  • 做公众号的素材网站分销电商平台有哪些
  • 网站后期维护协议如何免费注册网址
  • 内容展示型网站 设计特点福州百度seo
  • 外贸网站 推广影视广告宣传片制作公司
  • crm系统管理大兴安岭地网站seo
  • 免费 网站模板为什么自己做的网站别的电脑打不开
  • 公司网站建设建设辽宁鞍山网站建设
  • 企业为什么做网站优化推广做网站学什么什么专业
  • 怎样访问简版网站中小企业网站建设济南兴田德润电话
  • 哪里有零基础网站建设教学服务常用知名购物网站
  • 西宁高端企业网站建设公司名称大全免费取名
  • 如何解决网站图片打开慢关键词搜索推广排行榜
  • 网站建设销售话建网站需要怎样做
  • 网站排名和什么有关网络推广协议合同范本
  • 湖州房产网站建设南通市城乡和住房建设局网站
  • 郴州建设工程集团招聘信息网站wordpress 橘子皮模板
  • win7搭建网站服务器成都网站建设需多少钱
  • 网站开发一般需要多久菜谱网站模版
  • 基于jsp的电子商务网站开发最好的网站建设公司哪家好
  • 个人网站图片郑州技术支持seo
  • 先做网站还是先做app广州互联网