mysql 引用列 引用聚合列的MySQL別名

2021-10-22 04:22:00 字數 1152 閱讀 6762

select

company_id,

sum(case when status in (0, 1) then 1 else 0 end) as non_billable,

sum(case when status in (2, 3) then 1 else 0 end) as billable

sum(non_billable)/sum(billable) as ratio

from transactions

group by company_id

像這樣定義ratio看起來很漂亮和乾淨,但顯然也是forbidden by sql.

為了使查詢正常工作,我只複製了non_billable和billable的case語句.

select

company_id,

sum(case when status in (0, 1) then 1 else 0 end) as non_billable,

sum(case when status in (2, 3) then 1 else 0 end) as billable

sum(case when status in (0, 1) then 1 else 0 end)/sum(case when status in (2, 3) then 1 else 0 end) as ratio

from transactions

group by company_id

是否有更好,更清晰(非冗餘)的方式來編寫此查詢?

解決方法:

使用:select x.company_id,

x.non_billable,

x.billable,

x.non_billable/x.billable as ratio

from (select t.company_id

sum(case when status in (0, 1) then 1 else 0 end) as non_billable,

sum(case when status in (2, 3) then 1 else 0 end) as billable

from transactions

group by t.company_id) x

標籤:mysql,sql,aggregation,alias

外來鍵中引用列的數目與被引用列的數目不等

具體報錯 sql訊息 8139,級別 16,狀態 0,第 1 行 表 sc 的外來鍵中引用列的數目與被引用列的數目不等 問題描述 在sql的外來鍵的設立在使用add時可能會出現如題的報錯,原因是少了乙個標誌 錯誤 如下 alter table sc add constraint s c fore f...

在WHERE子句中引用取別名的列

問題 前面已經使用了別名為查詢提供更有意義的列名,而且也使用where子句將一些資料排除掉,然而,我們還想在where子句中引用別名。select sal as salary,comm as commission from emp where salary 5000 解決方案 將查詢作為內聯檢視就可...

excel 使用公式引用列值生成sql語句

excel資料ab cde姓名 金額日期 啦啦17 1990 11 19 在這使用公式 在這使用表示式用以下文字替換 insert into tablename id,name,amount,xx date,create time values sys guid a2 value b2 text c...