建设网站的网站,discuz网站ip,黑龙江国际旅行社电话,wordpress主题讲解目录 背景理论知识示例1211. 查询结果的质量和占比#xff08;Round group by#xff09;1204. 最后一个能进入巴士的人 #xff08;Having limit order by#xff09;1193. 每月交易 I#xff08;if group by#xff09;1179. 重新格式化部门表1174. 即时食物配送 IIRound group by1204. 最后一个能进入巴士的人 Having limit order by1193. 每月交易 Iif group by1179. 重新格式化部门表1174. 即时食物配送 II子查询1164. 指定日期的产品价格union groupby having 总结 背景 
7月leetcode 中 sql集训 
理论知识 
SQLStructured Query Language是一种用于管理和操作关系型数据库的标准化语言。无论是在日常开发中还是数据分析领域SQL都扮演着重要的角色。本博客将带您深入理解SQL并探索从基本查询到高级聚合的关键概念。 
SELECT语句从表中选择数据 SQL的核心是SELECT语句它用于从数据库表中检索数据。SELECT语句的基本结构如下 
Copy code
SELECT 列名1, 列名2, ...
FROM 表名;使用SELECT语句我们可以从表中获取所需的列并可选地应用过滤条件。 
WHERE子句筛选数据 WHERE子句用于对SELECT语句的结果进行筛选只返回满足特定条件的数据。 
SELECT 列名1, 列名2, ...
FROM 表名
WHERE 条件;条件可以是比较运算符例如, , , , , 或逻辑运算符例如AND, OR, NOT。通过WHERE子句我们可以获取符合特定条件的数据行。 
ORDER BY子句排序数据 ORDER BY子句用于对SELECT语句的结果进行排序可以按照一个或多个列进行升序或降序排列。 
SELECT 列名1, 列名2, ...
FROM 表名
ORDER BY 列名1 ASC/DESC, 列名2 ASC/DESC, ...;这样我们可以以特定的顺序获取数据使其更容易理解和分析。 
聚合函数统计和分析数据 SQL提供了一组强大的聚合函数用于对数据进行汇总和分析。 
常见的聚合函数包括 
COUNT统计行数 SUM计算总和 AVG计算平均值 MAX找到最大值 MIN找到最小值 
SELECT COUNT(*), SUM(销售额), AVG(利润)
FROM 销售表;GROUP BY子句分组汇总数据 GROUP BY子句用于对数据进行分组并在每个分组上应用聚合函数。 
SELECT 列名1, 列名2, 聚合函数1, 聚合函数2, ...
FROM 表名
GROUP BY 列名1, 列名2;通过GROUP BY我们可以对数据按照指定的列进行分组并获得每个分组的汇总结果。 
HAVING子句过滤分组后的数据 HAVING子句用于对GROUP BY子句生成的分组结果进行筛选类似于WHERE子句但WHERE用于筛选行HAVING用于筛选分组。 
SELECT 列名1, 列名2, 聚合函数1, 聚合函数2, ...
FROM 表名
GROUP BY 列名1, 列名2
HAVING 条件;JOIN操作联结多个表 JOIN操作用于在多个表之间建立连接并获得来自不同表的相关信息。 
常见的JOIN类型包括 
INNER JOIN获取两个表中匹配的行 LEFT JOIN获取左表中所有行和右表中匹配的行 RIGHT JOIN获取右表中所有行和左表中匹配的行 FULL JOIN获取所有表中匹配的行 
SELECT 列名1, 列名2, ...
FROM 表名1
JOIN 表名2 ON 表名1.列名  表名2.列名;子查询嵌套查询 子查询是指在SELECT语句中嵌套另一个SELECT语句用于解决复杂的查询需求。 
SELECT 列名1, 列名2, ...
FROM 表名
WHERE 列名 IN (SELECT 列名 FROM 表名 WHERE 条件);子查询可以嵌套多层使得我们能够在一个查询中获取更具体和复杂的结果。 
示例 
1211. 查询结果的质量和占比Round group by select query_name,
ROUND(AVG(rating/position),2) quality,
ROUND(avg(rating  3)*100,2) poor_query_percentage 
from queries group by query_name;1204. 最后一个能进入巴士的人 Having limit order by SELECT a.person_name
FROM Queue a, Queue b
WHERE a.turn  b.turn
GROUP BY a.person_id 
HAVING SUM(b.weight)  1000
ORDER BY a.turn DESC
LIMIT 11193. 每月交易 Iif group by SELECT DATE_FORMAT(trans_date,%Y-%m) AS month,country,COUNT(id) AS trans_count,COUNT(IF(state  approved,id,null)) AS approved_count,SUM(amount) AS trans_total_amount,SUM(IF(state  approved,amount,0)) AS approved_total_amount  
FROM Transactions
GROUP BY country,DATE_FORMAT(trans_date,%Y-%m) 1179. 重新格式化部门表 select distinct id,sum(IF(monthJan,revenue,null)) as Jan_Revenue,sum(IF(monthFeb,revenue,null)) as Feb_Revenue,sum(IF(monthMar,revenue,null)) as Mar_Revenue,sum(IF(monthApr,revenue,null)) as Apr_Revenue,sum(IF(monthMay,revenue,null)) as May_Revenue,sum(IF(monthJun,revenue,null)) as Jun_Revenue,sum(IF(monthJul,revenue,null)) as Jul_Revenue,sum(IF(monthAug,revenue,null)) as Aug_Revenue,sum(IF(monthSep,revenue,null)) as Sep_Revenue,sum(IF(monthOct,revenue,null)) as Oct_Revenue,sum(IF(monthNov,revenue,null)) as Nov_Revenue,sum(IF(monthDec,revenue,null)) as Dec_Revenuefrom Department group by id ;1174. 即时食物配送 II子查询 select 
round(sum(order_date  customer_pref_delivery_date)/count(*)*100,2) immediate_percentage
from Delivery
where (customer_id,order_date) in 
(select customer_id,min(order_date) from Delivery group by customer_id)1164. 指定日期的产品价格union groupby having 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_date2019-08-16) as t
where t.row_num1unionselect product_id, 10 as price 
from Products 
group by product_id
having min(change_date)2019-08-16总结 
SQL是一种强大且灵活的语言它能够帮助我们轻松地管理和分析数据库中的数据。了解基本查询、过滤、聚合以及联结多个表等操作将使您在应用开发和数据分析领域更具优势。随着不断练习和深入学习SQL我已经驾轻就熟了。你也试试吧