1. 程式人生 > 其它 >having列,不是group by的列,也不是聚合函式

having列,不是group by的列,也不是聚合函式

測試內容:having用法測試,寫在where後面的條件加在having後面去

結果:clickhouse上面可以執行,oracle執行報錯不是GROUP BY 表示式

PS:資料庫系統工程師的題庫裡面有這個用法,因顛覆了我的認知,所以測試下

第1次測試
SELECT "版本",COUNT(1),MAX("企業板塊") from tableA
WHERE "企業板塊"='金融板塊'
group by "版本"
確實等價於
SELECT "版本",COUNT(1),MAX("企業板塊") from tableB
group by "版本"
having "企業板塊"='金融板塊'
不過過濾寫在where後面效能更加好

第2次測試
DROP table cs_thz_2021102801;
create table cs_thz_2021102801(
empno String,
empname String,
deptname String,
zhiwei String,
sal Float32
)
ENGINE=Log
;
SELECT * FROM cs_thz_2021102801
;
INSERT into cs_thz_2021102801(empno,empname,deptname,zhiwei,sal)
values('00001','張三','開發部','職員',200);
INSERT into cs_thz_2021102801(empno,empname,deptname,zhiwei,sal)
values('00002','張三2','開發部','經理',600);
INSERT into cs_thz_2021102801(empno,empname,deptname,zhiwei,sal)
values('00003','張三3','開發部','職員',400);
INSERT into cs_thz_2021102801(empno,empname,deptname,zhiwei,sal)
values('00004','張三4','開發部','經理',800);
INSERT into cs_thz_2021102801(empno,empname,deptname,zhiwei,sal)
values('00005','張三5','銷售部','職員',100);
INSERT into cs_thz_2021102801(empno,empname,deptname,zhiwei,sal)
values('00006','張三6','銷售部','經理',200);
INSERT into cs_thz_2021102801(empno,empname,deptname,zhiwei,sal)
values('00007','張三7','銷售部','職員',300);
INSERT into cs_thz_2021102801(empno,empname,deptname,zhiwei,sal)
values('00008','張三8','銷售部','經理',400);
SELECT deptname,avg(sal) FROM cs_thz_2021102801
group by deptname
having zhiwei='經理'
;