在进行分组计算时会用到分组查询,比方按部分计算人数、按工种计算薪酬状况等。分组查询必定会运用到分组函数,也必定会用到group by子句。A8站源码交易平台

Tip:
1️⃣在单表分组查询中,一切不是分组函数的查询字段都要呈现在group by子句之后,呈现的次序不影响查询成果;
2️⃣where子句必定是紧跟着from子句的,from要害字后是操作的表目标,where子句中的判别条件要么是常量要么是操作的表目标的字段,且where子句中不支撑运用别号,子查询相同如此;
3️⃣一般而言分组前的数据挑选放在where子句中,分组后的数据挑选放在having子句中,但假如分组后的数据挑选的条件是操作表的字段时(比方分组的条件)也能够放在where子句中(且此刻功率更高),可是where子句中是不能运用分组函数的,原因是分组函数的成果并不是操作表的字段,因而咱们能够这么去回忆:只需挑选条件是操作表中的字段就放在where子句中不然放在having子句中,示例:曾经两个句子的成果完全相同,可是第一个句子的功率要高于第二个.
select count(*),order_code
from lmt_flow_advance_check_apply
where order_code >= 'BJ20190104'
group by order_code;
select count(*),order_code
from lmt_flow_advance_check_apply
group by order_code
having order_code >= 'BJ20190104';
4️⃣order by子句放在最终;
5️⃣order by子句、group by子句和having子句都支撑别号;
6️⃣SQL也支撑按表达式或函数分组,且支撑别号
#运用函数分组
SELECT COUNT(*),LENGTH(last_name)
FROM employees
GROUP BY LENGTH(last_name);
#运用函数分组且运用别号
SELECT COUNT(*) c,LENGTH(last_name) name_len
FROM employees
GROUP BY name_len
HAVING c > 5;