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

台州宇洋台州网站建设百度的排名规则详解

台州宇洋台州网站建设,百度的排名规则详解,wordpress 笔记,厦门新闻头条最新消息目录 高级查询与连接 1731 每 位 经 理 的 下 属 员 工 数 量 1789 员 工 的 直 属 部 门 610 判 断 三 角 形 180 连 续 出 现 的 数 字 1164 指 定 日 期 的 产 品 价 格 1204 最 后 一 个 能 进 入 巴 士 的 人 1907 按 分 类 统 计 薪 水 子查询 1978 上…

目录

高级查询与连接

1731 · 每 位 经 理 的 下 属 员 工 数 量

1789 · 员 工 的 直 属 部 门

610 · 判 断 三 角 形

180 · 连 续 出 现 的 数 字

1164 · 指 定 日 期 的 产 品 价 格 

 1204 · 最 后 一 个 能 进 入 巴 士 的 人

1907 · 按 分 类 统 计 薪 水

子查询

1978 · 上 级 经 理 已 离 职 的 公 司 员 工

626 · 换 座 位

1341 · 电 影 评 分


高级查询与连接

1731 · 每 位 经 理 的 下 属 员 工 数 量

1731. 每位经理的下属员工数量

表:Employees+-------------+----------+
| Column Name | Type     |
+-------------+----------+
| employee_id | int      |
| name        | varchar  |
| reports_to  | int      |
| age         | int      |
+-------------+----------+
employee_id 是这个表中具有不同值的列。
该表包含员工以及需要听取他们汇报的上级经理的 ID 的信息。 有些员工不需要向任何人汇报(reports_to 为空)。对于此问题,我们将至少有一个其他员工需要向他汇报的员工,视为一个经理。编写一个解决方案来返回需要听取汇报的所有经理的 ID、名称、直接向该经理汇报的员工人数,以及这些员工的平均年龄,其中该平均年龄需要四舍五入到最接近的整数。返回的结果集需要按照 employee_id 进行排序。结果的格式如下:示例 1:输入:
Employees 表:
+-------------+---------+------------+-----+
| employee_id | name    | reports_to | age |
+-------------+---------+------------+-----+
| 9           | Hercy   | null       | 43  |
| 6           | Alice   | 9          | 41  |
| 4           | Bob     | 9          | 36  |
| 2           | Winston | null       | 37  |
+-------------+---------+------------+-----+
输出:
+-------------+-------+---------------+-------------+
| employee_id | name  | reports_count | average_age |
+-------------+-------+---------------+-------------+
| 9           | Hercy | 2             | 39          |
+-------------+-------+---------------+-------------+
解释:
Hercy 有两个需要向他汇报的员工, 他们是 Alice and Bob. 他们的平均年龄是 (41+36)/2 = 38.5, 四舍五入的结果是 39.
示例 2:输入: 
Employees 表:
+-------------+---------+------------+-----+ 
| employee_id | name    | reports_to | age |
|-------------|---------|------------|-----|
| 1           | Michael | null       | 45  |
| 2           | Alice   | 1          | 38  |
| 3           | Bob     | 1          | 42  |
| 4           | Charlie | 2          | 34  |
| 5           | David   | 2          | 40  |
| 6           | Eve     | 3          | 37  |
| 7           | Frank   | null       | 50  |
| 8           | Grace   | null       | 48  |
+-------------+---------+------------+-----+ 
输出: 
+-------------+---------+---------------+-------------+
| employee_id | name    | reports_count | average_age |
| ----------- | ------- | ------------- | ----------- |
| 1           | Michael | 2             | 40          |
| 2           | Alice   | 2             | 37          |
| 3           | Bob     | 1             | 37          |
+-------------+---------+---------------+-------------+
SELECTe2.employee_id,e2.name,COUNT(e1.employee_id) AS reports_count,ROUND(AVG(e1.age), 0) AS average_age
FROM employees e1 LEFT JOIN employees e2ON e1.reports_to = e2.employee_id
WHERE e1.reports_to IS NOT NULL
GROUP BYe1.reports_to
ORDER BYe2.employee_id

采用评论区的题解:

@

xiehaha

| employee_id | name    | reports_to | age | employee_id | name  | reports_to | age  |
| ----------- | ------- | ---------- | --- | ----------- | ----- | ---------- | ---- |
| 9           | Hercy   | null       | 43  | null        | null  | null       | null |
| 6           | Alice   | 9          | 41  | 9           | Hercy | null       | 43   |
| 4           | Bob     | 9          | 36  | 9           | Hercy | null       | 43   |
| 2           | Winston | null       | 37  | null        | null  | null       | null |

1789 · 员 工 的 直 属 部 门

1789. 员工的直属部门

表:Employee+---------------+---------+
| Column Name   |  Type   |
+---------------+---------+
| employee_id   | int     |
| department_id | int     |
| primary_flag  | varchar |
+---------------+---------+
这张表的主键为 employee_id, department_id (具有唯一值的列的组合)
employee_id 是员工的ID
department_id 是部门的ID,表示员工与该部门有关系
primary_flag 是一个枚举类型,值分别为('Y', 'N'). 如果值为'Y',表示该部门是员工的直属部门。 如果值是'N',则否一个员工可以属于多个部门。当一个员工加入超过一个部门的时候,他需要决定哪个部门是他的直属部门。请注意,当员工只加入一个部门的时候,那这个部门将默认为他的直属部门,虽然表记录的值为'N'.请编写解决方案,查出员工所属的直属部门。返回结果 没有顺序要求 。返回结果格式如下例子所示:示例 1:输入:
Employee table:
+-------------+---------------+--------------+
| employee_id | department_id | primary_flag |
+-------------+---------------+--------------+
| 1           | 1             | N            |
| 2           | 1             | Y            |
| 2           | 2             | N            |
| 3           | 3             | N            |
| 4           | 2             | N            |
| 4           | 3             | Y            |
| 4           | 4             | N            |
+-------------+---------------+--------------+
输出:
+-------------+---------------+
| employee_id | department_id |
+-------------+---------------+
| 1           | 1             |
| 2           | 1             |
| 3           | 3             |
| 4           | 3             |
+-------------+---------------+
解释:
- 员工 1 的直属部门是 1
- 员工 2 的直属部门是 1
- 员工 3 的直属部门是 3
- 员工 4 的直属部门是 3

使用一个UNION就可以解决了,

SELECT employee_id,department_id 
FROM Employee 
GROUP BY employee_id 
HAVING COUNT(*) = 1
UNION
SELECT employee_id,department_id 
FROM Employee 
WHERE primary_flag = 'Y'

610 · 判 断 三 角 形

610. 判断三角形

表: Triangle+-------------+------+
| Column Name | Type |
+-------------+------+
| x           | int  |
| y           | int  |
| z           | int  |
+-------------+------+
在 SQL 中,(x, y, z)是该表的主键列。
该表的每一行包含三个线段的长度。对每三个线段报告它们是否可以形成一个三角形。以 任意顺序 返回结果表。查询结果格式如下所示。示例 1:输入: 
Triangle 表:
+----+----+----+
| x  | y  | z  |
+----+----+----+
| 13 | 15 | 30 |
| 10 | 20 | 15 |
+----+----+----+
输出: 
+----+----+----+----------+
| x  | y  | z  | triangle |
+----+----+----+----------+
| 13 | 15 | 30 | No       |
| 10 | 20 | 15 | Yes      |
+----+----+----+----------+
SELECT x, y, z,IF(x + y + z > 2 * GREATEST(x, y, z) , 'Yes', 'No') AS triangle
FROM Triangle;
IF函数用于条件判断,其语法是IF(condition, true_value, false_value)
GREATEST函数用于返回其参数列表中的最大值

180 · 连 续 出 现 的 数 字

180. 连续出现的数字

表:Logs+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| id          | int     |
| num         | varchar |
+-------------+---------+
在 SQL 中,id 是该表的主键。
id 是一个自增列。找出所有至少连续出现三次的数字。返回的结果表中的数据可以按 任意顺序 排列。结果格式如下面的例子所示:示例 1:输入:
Logs 表:
+----+-----+
| id | num |
+----+-----+
| 1  | 1   |
| 2  | 1   |
| 3  | 1   |
| 4  | 2   |
| 5  | 1   |
| 6  | 2   |
| 7  | 2   |
+----+-----+
输出:
Result 表:
+-----------------+
| ConsecutiveNums |
+-----------------+
| 1               |
+-----------------+
解释:1 是唯一连续出现至少三次的数字。

直接通过where判断id+1,id+2是否在表中来判断是否有连续的三个数字。

SELECT DISTINCT Num AS ConsecutiveNums FROM Logs 
WHERE (Id+1, Num) IN (SELECT * FROM Logs)
AND (Id+2, Num) IN (SELECT * FROM Logs)

使用JOIN

# 可以写很多个join,只要满足3个就行了
select distinct l.num AS ConsecutiveNums
from Logs l
join Logs l1 on l.id = l1.id + 1
join Logs l2 on l.id = l2.id + 2
where l.num = l1.num AND l.num = l2.num # 限制条件join了至少3个之后,number必须一样

1164 · 指 定 日 期 的 产 品 价 格 

1164. 指定日期的产品价格

产品数据表: Products+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| product_id    | int     |
| new_price     | int     |
| change_date   | date    |
+---------------+---------+
(product_id, change_date) 是此表的主键(具有唯一值的列组合)。
这张表的每一行分别记录了 某产品 在某个日期 更改后 的新价格。编写一个解决方案,找出在 2019-08-16 时全部产品的价格,假设所有产品在修改前的价格都是 10 。以 任意顺序 返回结果表。结果格式如下例所示。示例 1:输入:
Products 表:
+------------+-----------+-------------+
| product_id | new_price | change_date |
+------------+-----------+-------------+
| 1          | 20        | 2019-08-14  |
| 2          | 50        | 2019-08-14  |
| 1          | 30        | 2019-08-15  |
| 1          | 35        | 2019-08-16  |
| 2          | 65        | 2019-08-17  |
| 3          | 20        | 2019-08-18  |
+------------+-----------+-------------+
输出:
+------------+-------+
| product_id | price |
+------------+-------+
| 2          | 50    |
| 1          | 35    |
| 3          | 10    |
+------------+-------+

嗯......这个题,我寻思着我也不会啊,

评论区佬的答案:

select t.product_id, t.new_price as price
from (select *, row_number() over (PARTITION BY product_id order by change_date desc) as row_num
from Products
where change_date<='2019-08-16') as t
where t.row_num=1unionselect product_id, 10 as price 
from Products 
group by product_id
having min(change_date)>'2019-08-16'

 1204 · 最 后 一 个 能 进 入 巴 士 的 人

1204. 最后一个能进入巴士的人

表: Queue+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| person_id   | int     |
| person_name | varchar |
| weight      | int     |
| turn        | int     |
+-------------+---------+
person_id 是这个表具有唯一值的列。
该表展示了所有候车乘客的信息。
表中 person_id 和 turn 列将包含从 1 到 n 的所有数字,其中 n 是表中的行数。
turn 决定了候车乘客上巴士的顺序,其中 turn=1 表示第一个上巴士,turn=n 表示最后一个上巴士。
weight 表示候车乘客的体重,以千克为单位。有一队乘客在等着上巴士。然而,巴士有1000  千克 的重量限制,所以其中一部分乘客可能无法上巴士。编写解决方案找出 最后一个 上巴士且不超过重量限制的乘客,并报告 person_name 。题目测试用例确保顺位第一的人可以上巴士且不会超重。返回结果格式如下所示。示例 1:输入:
Queue 表
+-----------+-------------+--------+------+
| person_id | person_name | weight | turn |
+-----------+-------------+--------+------+
| 5         | Alice       | 250    | 1    |
| 4         | Bob         | 175    | 5    |
| 3         | Alex        | 350    | 2    |
| 6         | John Cena   | 400    | 3    |
| 1         | Winston     | 500    | 6    |
| 2         | Marie       | 200    | 4    |
+-----------+-------------+--------+------+
输出:
+-------------+
| person_name |
+-------------+
| John Cena   |
+-------------+
解释:
为了简化,Queue 表按 turn 列由小到大排序。
+------+----+-----------+--------+--------------+
| Turn | ID | Name      | Weight | Total Weight |
+------+----+-----------+--------+--------------+
| 1    | 5  | Alice     | 250    | 250          |
| 2    | 3  | Alex      | 350    | 600          |
| 3    | 6  | John Cena | 400    | 1000         | (最后一个上巴士)
| 4    | 2  | Marie     | 200    | 1200         | (无法上巴士)
| 5    | 4  | Bob       | 175    | ___          |
| 6    | 1  | Winston   | 500    | ___          |
+------+----+-----------+--------+--------------+
SELECT person_name 
FROM (SELECT person_name, turn, sum(weight) OVER(ORDER BY turn) AS total FROM Queue) t 
WHERE total <= 1000 
ORDER BY turn DESC
LIMIT 1
;

1907 · 按 分 类 统 计 薪 水

1907. 按分类统计薪水

表: Accounts+-------------+------+
| 列名        | 类型  |
+-------------+------+
| account_id  | int  |
| income      | int  |
+-------------+------+
在 SQL 中,account_id 是这个表的主键。
每一行都包含一个银行帐户的月收入的信息。查询每个工资类别的银行账户数量。 工资类别如下:"Low Salary":所有工资 严格低于 20000 美元。
"Average Salary": 包含 范围内的所有工资 [$20000, $50000] 。
"High Salary":所有工资 严格大于 50000 美元。结果表 必须 包含所有三个类别。 如果某个类别中没有帐户,则报告 0 。按 任意顺序 返回结果表。查询结果格式如下示例。示例 1:输入:
Accounts 表:
+------------+--------+
| account_id | income |
+------------+--------+
| 3          | 108939 |
| 2          | 12747  |
| 8          | 87709  |
| 6          | 91796  |
+------------+--------+
输出:
+----------------+----------------+
| category       | accounts_count |
+----------------+----------------+
| Low Salary     | 1              |
| Average Salary | 0              |
| High Salary    | 3              |
+----------------+----------------+
解释:
低薪: 有一个账户 2.
中等薪水: 没有.
高薪: 有三个账户,他们是 3, 6和 8.
SELECT  'Low Salary' AS category,  SUM(CASE WHEN income < 20000 THEN 1 ELSE 0 END) AS accounts_count  
FROM Accounts  
UNION ALL  
SELECT  'Average Salary' AS category,  SUM(CASE WHEN income >= 20000 AND income <= 50000 THEN 1 ELSE 0 END) AS accounts_count  
FROM Accounts  
UNION ALL  
SELECT  'High Salary' AS category,  SUM(CASE WHEN income > 50000 THEN 1 ELSE 0 END) AS accounts_count  
FROM Accounts;

子查询

1978 · 上 级 经 理 已 离 职 的 公 司 员 工

1978. 上级经理已离职的公司员工

表: Employees+-------------+----------+
| Column Name | Type     |
+-------------+----------+
| employee_id | int      |
| name        | varchar  |
| manager_id  | int      |
| salary      | int      |
+-------------+----------+
在 SQL 中,employee_id 是这个表的主键。
这个表包含了员工,他们的薪水和上级经理的id。
有一些员工没有上级经理(其 manager_id 是空值)。查找这些员工的id,他们的薪水严格少于$30000 并且他们的上级经理已离职。当一个经理离开公司时,他们的信息需要从员工表中删除掉,但是表中的员工的manager_id  这一列还是设置的离职经理的id 。返回的结果按照employee_id 从小到大排序。查询结果如下所示:示例:输入:
Employees table:
+-------------+-----------+------------+--------+
| employee_id | name      | manager_id | salary |
+-------------+-----------+------------+--------+
| 3           | Mila      | 9          | 60301  |
| 12          | Antonella | null       | 31000  |
| 13          | Emery     | null       | 67084  |
| 1           | Kalel     | 11         | 21241  |
| 9           | Mikaela   | null       | 50937  |
| 11          | Joziah    | 6          | 28485  |
+-------------+-----------+------------+--------+
输出:
+-------------+
| employee_id |
+-------------+
| 11          |
+-------------+解释:
薪水少于 30000 美元的员工有 1 号(Kalel) 和 11号 (Joziah)。
Kalel 的上级经理是 11 号员工,他还在公司上班(他是 Joziah )。
Joziah 的上级经理是 6 号员工,他已经离职,因为员工表里面已经没有 6 号员工的信息了,它被删除了。
SELECT employee_id
FROM Employees
WHERE salary < 30000
AND manager_id NOT IN (SELECT employee_id FROM Employees)
ORDER BY employee_id
;

626 · 换 座 位

626. 换座位

表: Seat+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| id          | int     |
| student     | varchar |
+-------------+---------+
id 是该表的主键(唯一值)列。
该表的每一行都表示学生的姓名和 ID。
ID 序列始终从 1 开始并连续增加。编写解决方案来交换每两个连续的学生的座位号。如果学生的数量是奇数,则最后一个学生的id不交换。按 id 升序 返回结果表。查询结果格式如下所示。示例 1:输入: 
Seat 表:
+----+---------+
| id | student |
+----+---------+
| 1  | Abbot   |
| 2  | Doris   |
| 3  | Emerson |
| 4  | Green   |
| 5  | Jeames  |
+----+---------+
输出: 
+----+---------+
| id | student |
+----+---------+
| 1  | Doris   |
| 2  | Abbot   |
| 3  | Green   |
| 4  | Emerson |
| 5  | Jeames  |
+----+---------+
解释:
请注意,如果学生人数为奇数,则不需要更换最后一名学生的座位。
SELECT
if(id % 2 = 0 ,id - 1 ,if(id = (SELECT count(*) FROM Seat) ,id ,id + 1))id,
student
FROM Seat
ORDER BY id 

1341 · 电 影 评 分

1341. 电影评分

表:Movies+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| movie_id      | int     |
| title         | varchar |
+---------------+---------+
movie_id 是这个表的主键(具有唯一值的列)。
title 是电影的名字。
表:Users+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| user_id       | int     |
| name          | varchar |
+---------------+---------+
user_id 是表的主键(具有唯一值的列)。
'name' 列具有唯一值。
表:MovieRating+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| movie_id      | int     |
| user_id       | int     |
| rating        | int     |
| created_at    | date    |
+---------------+---------+
(movie_id, user_id) 是这个表的主键(具有唯一值的列的组合)。
这个表包含用户在其评论中对电影的评分 rating 。
created_at 是用户的点评日期。 请你编写一个解决方案:查找评论电影数量最多的用户名。如果出现平局,返回字典序较小的用户名。
查找在 February 2020 平均评分最高 的电影名称。如果出现平局,返回字典序较小的电影名称。
字典序 ,即按字母在字典中出现顺序对字符串排序,字典序较小则意味着排序靠前。返回结果格式如下例所示。示例 1:输入:
Movies 表:
+-------------+--------------+
| movie_id    |  title       |
+-------------+--------------+
| 1           | Avengers     |
| 2           | Frozen 2     |
| 3           | Joker        |
+-------------+--------------+
Users 表:
+-------------+--------------+
| user_id     |  name        |
+-------------+--------------+
| 1           | Daniel       |
| 2           | Monica       |
| 3           | Maria        |
| 4           | James        |
+-------------+--------------+
MovieRating 表:
+-------------+--------------+--------------+-------------+
| movie_id    | user_id      | rating       | created_at  |
+-------------+--------------+--------------+-------------+
| 1           | 1            | 3            | 2020-01-12  |
| 1           | 2            | 4            | 2020-02-11  |
| 1           | 3            | 2            | 2020-02-12  |
| 1           | 4            | 1            | 2020-01-01  |
| 2           | 1            | 5            | 2020-02-17  | 
| 2           | 2            | 2            | 2020-02-01  | 
| 2           | 3            | 2            | 2020-03-01  |
| 3           | 1            | 3            | 2020-02-22  | 
| 3           | 2            | 4            | 2020-02-25  | 
+-------------+--------------+--------------+-------------+
输出:
Result 表:
+--------------+
| results      |
+--------------+
| Daniel       |
| Frozen 2     |
+--------------+
解释:
Daniel 和 Monica 都点评了 3 部电影("Avengers", "Frozen 2" 和 "Joker") 但是 Daniel 字典序比较小。
Frozen 2 和 Joker 在 2 月的评分都是 3.5,但是 Frozen 2 的字典序比较小。
(SELECT u.name AS results
FROM Users u
LEFT JOIN MovieRating mr ON u.user_id = mr.user_id
GROUP BY u.user_id
ORDER BY COUNT(*) DESC, name ASC
LIMIT 1)UNION ALL(SELECT title AS results
FROM Movies m
LEFT JOIN MovieRating mr ON m.movie_id = mr.movie_id AND YEAR(mr.created_at) = 2020 AND MONTH(mr.created_at) = 2
GROUP BY mr.movie_id
ORDER BY AVG(mr.rating) DESC, title
LIMIT 1);

近日总结:9月份我要去爬山!!!

http://www.dtcms.com/wzjs/287414.html

相关文章:

  • 网站建设最新开发语言搜索引擎营销简称seo
  • 电子商务网站建设实训过程西安全网优化
  • 做网站用笔记本做服务器吗seowhy培训
  • 上海大型网站制作公如何自建网站?
  • 现在一般做网站都是去哪家做的微信视频号小店
  • json取数据做网站注册平台
  • 做教育的网站智慧教育
  • 顺企网吉安网站建设关键词林俊杰无损下载
  • 什么是黄页快速优化工具
  • 模拟手机营销网站关键词优化建议
  • 做门窗做什么网站好郑州黑帽seo培训
  • 网站运营心得建网站找哪个公司
  • 理财网站建设怎么申请自己的网络平台
  • 加强会计师事务所品牌建设seo推广需要多少钱
  • 企业网站运营三只松鼠网络营销案例分析
  • 印后设备网站建设系统优化软件
  • 电子商务网站建设 教材广州网站建设费用
  • 教育 高校 网站模板百度投流
  • 大型企业网站建设南京网站seo
  • 动漫制作专业名人百度关键词优化软件如何
  • 韶山网站建设四川省人民政府官网
  • 网站仿做软件广州网站维护
  • 南昌高端网站开发费用表网络推广合作资源平台
  • 网站 备案网站百度竞价排名的优缺点
  • 网站提供哪些服务网站seo方案
  • 建筑工程人才培训网官网搜索引擎seo如何优化
  • 国内美食网站欣赏seo搜索是什么
  • 做我女朋友好吗网站广州网站建设技术外包
  • 网站建设如何电子商务主要学什么内容
  • 长春市规划建设局网站查询怎么在百度发布自己的文章