查询语句
(SELECT [ALL|DISTINCT] <目标列表达式> [,<目标列表达式>]···
FROM <表名或视图名> [,<表名或视图名>···]|(<SELECT 语句>) [AS] <别名>
[WHERE <条件表达式>]
[GROUP BY <列名1>
[HAVING <条件表达式>]]
[ORDER BY <列名2> [ASC|DESC]])
- SQL 查询的执行顺序是:
FROM
→WHERE
→GROUP BY
→HAVING
→SELECT
。
关于去重 distinct
1, Joe ,70000,3
2, Henry ,80000,4
3, Sam ,60000,
4, Max ,90000,
5, Max ,90000
select e.name from employee e
Joe
Henry
Sam
Max
Max
由于出现了重复的语句,去重
select distinct e.name from employee e
Joe
Henry
Sam
Max
where
leetcode---mysql-CSDN博客
group by
leetcode----mysql-CSDN博客
SELECT
date_id,
make_name,
COUNT(DISTINCT lead_id) AS unique_leads,
COUNT(DISTINCT partner_id) AS unique_partners
FROM
DailySales
这样写是错的
因为题目有一句
对于每一个 date_id
和 make_name
,找出 不同 的 lead_id
以及 不同 的 partner_id
的数量。
# Write your MySQL query statement below
SELECT
date_id,
make_name,
COUNT(DISTINCT lead_id) AS unique_leads,
COUNT(DISTINCT partner_id) AS unique_partners
FROM
DailySales
group by date_id, make_name;
having
示例
假设我们有一个名为 sales
的表,包含以下字段:
id
:销售记录的唯一标识product
:产品名称amount
:销售金额salesperson
:销售员名称
示例 1:按产品分组,筛选出总销售额大于 1000 的产品
SELECT product, SUM(amount) AS total_sales FROM sales GROUP BY product HAVING SUM(amount) > 1000;
在这个查询中,我们按 product
列分组,并计算每种产品的总销售额,最后筛选出总销售额大于 1000 的产品。
示例 2:按销售员分组,筛选出销售记录数量大于 5 的销售员
SELECT salesperson, COUNT(*) AS number_of_sales FROM sales GROUP BY salesperson HAVING COUNT(*) > 5;
这个查询将返回销售记录数量大于 5 的销售员。
示例 3:按产品分组,计算每种产品的平均销售额,并筛选出平均销售额大于 200 的产品
SELECT product, AVG(amount) AS average_sales FROM sales GROUP BY product HAVING AVG(amount) > 200;
在这个查询中,我们使用 HAVING
子句过滤出平均销售额大于 200 的产品。
参考文章
《数据库系统》期末复习知识点总结(全)_数据库期末知识点总结-CSDN博客