注:后面那个 as 必须要写
select
max
(total) from (
select
count
(*) as total from blog group by btype) as aa;
补充知识:
mysql
中
MAX
()函数和
count
()函数的技巧
使用
1.
max
()函数
在考虑提高
数据库
io的情况下,可以创建索引 ===>create index 索引名称 on 表名(列名);
2.
count
()函数
问题:
count
(*)与
count
(某列)
文章目录1. 集合成员资格2. 集合的比较3. 空关系测试:exist、not exist4. 重复元祖存在性测试5. from子句
中
的子查询6. with子句7. 标量子查询
SQL
提供
嵌套
子查询机制:子查询是
嵌套
在另一个查询
中
的
select
-from-where表达式。子查询
嵌套
在where子句
中
,通常用于对集合的成员资格、集合的比较及集合的基数进行检查;子查询也可以
嵌套
from子句
中
;除此之外,还有一类子查询是标量子查询。
1. 集合成员资格
SQL
允许测试元祖在关系
中
的成员资格:
目的:
Mysql
聚合函数
嵌套
使用
聚合函数
不可以直接
嵌套
使用
,比如:
max
(
count
(*))
但是可以
嵌套
子查询
使用
(先分组取出
count
值, 再将
count
值倒序排列,取第一个值就是最大的) eg:
注:后面那个 as 必须要写
select
max
(total) from (
select
count
(*) as total from blog grou...
窗口函数及OVER子句(4):聚合
嵌套
及窗口函数的其余问题
若觉得本文写得还可以,请多多关注本人所作书籍《C++语法详解》电子工业出版社出版,作者 黄勇
本文为原创文章,转载请注明出处,或注明转载自“黄邦勇帅(原名:黄勇)
五、聚合
嵌套
及窗口函数的其余问题
1、窗口函数不能
嵌套
在窗口函数或其他聚合
中
,但分组
聚合函数
可以
嵌套
在窗口函数
中
,比如
select
b,c
--,SUM( SUM(c) ...
当我们需要在 CASE WHEN 子句
中
嵌套
聚合函数
时,需要注意以下两点:
1.
聚合函数
应该放在 CASE WHEN 子句
中
,而不是放在 THEN 或 ELSE 子句
中
。
2. 如果需要在
SELECT
子句
中
引用 CASE WHEN 子句
中
的
聚合函数
,需要
使用
子查询或者 CTE(公共表表达式)将其结果保存到一个临时表
中
。
例如,下面的
SQL
查询将订单表
中
金额大于 100 的订单按照客户类型进行统计,并将结果按照客户类型和统计值降序排序:
WITH high_amount_orders AS (
SELECT
customer_type,
COUNT
(*) AS order_
count
,
SUM(CASE WHEN amount > 500 THEN 1 ELSE 0 END) AS high_amount_
count
FROM orders
GROUP BY customer_type
SELECT
customer_type,
order_
count
,
high_amount_
count
,
CAST(high_amount_
count
AS FLOAT) / CAST(order_
count
AS FLOAT) AS high_amount_ratio
FROM high_amount_orders
ORDER BY customer_type ASC, order_
count
DESC;
在上面的查询
中
,我们将 CASE WHEN 子句
嵌套
在了 SUM 函数
中
,实现了对金额大于 500 的订单数量进行统计。同时,我们
使用
了 CTE 将查询结果保存到一个临时表
中
,并在
SELECT
子句
中
引用了临时表
中
的
聚合函数
。这样可以方便地对数据进行处理和分析。