update?tbltest?set?percent?=?100*value/(select?sum(value)?from?tbltest)||'%';
從策劃到設計制作,每一步都追求做到細膩,制作可持續發展的企業網站。為客戶提供成都網站設計、做網站、網站策劃、網頁設計、主機域名、網頁空間、網絡營銷、VI設計、 網站改版、漏洞修補等服務。為客戶提供更好的一站式互聯網解決方案,以客戶的口碑塑造優易品牌,攜手廣大客戶,共同發展進步。
第二個寫法出來的是相同id值的計數情況。一般來說,一條select語句的執行順序如下:from子句→where→group by(having)→select→order by→limit,因為聚集函數是在select中的,所以是在執行完group by之后再執行count()函數,所以第二條寫法是得不到總的記錄數的。如果你要獲得總的記錄數就用第一種寫法。
declare @biXiu int,@Zongshu int
select @biXiu=count(*) from course where type='必修'
select @Zongshu=count(*) from course
select cast(@biXiu*100.0/@Zongshu as varchar)+'%'
--其中 @biXiu代表必修個總數
--補充字符串說明
SELECT CAST('123.456' as decimal) 將會得到 123(小數點后面的將會被省略掉)。如果希望得到小數點后面的兩位。則需要把上面的改為SELECT CAST('123.456' as decimal(38, 2))
假設表員工檔案里有性別、姓名兩個字段
select count(*) as 員工總數,sum(case when 性別=男 then 1 else 0 end) 男員工數,sum(case when 性別=男 then 1 else 0 end)/nullif(count(*),0) 男所占比例,sum(case when 性別=女 then 1 else 0 end) 女員工數,sum(case when 性別=女 then 1 else 0 end) /nullif(count(*),0)女所占比例
from 員工檔案
你自己試試看吧
樓上的寫的不錯,但是最好注意一些除0問題,要是張空表會報除0錯誤的。
應該是這樣的::
select name,brand_id,concat(floor((sum(goods_num)/(select sum(goods_num) from tablename))*100),'%') as goods_num_rate
from tablename group by name;
select 12/23 * 100 ||'%' from dual;
mysql 服務器支持 # 到該行結束、-- 到該行結束 以及 /* 行中間或多個行 */ 的注釋方格:
mysql SELECT 1+1; # 這個注釋直到該行結束
mysql SELECT 1+1; -- 這個注釋直到該行結束
mysql SELECT 1 /* 這是一個在行中間的注釋 */ + 1;
mysql SELECT 1+
/*
這是一個
多行注釋的形式
*/
1;
注意 -- (雙長劃) 注釋風格要求在兩個長劃后至少有一個空格!
盡管服務器理解剛才描述的注釋句法,但 MySQL 客戶端的語法分析在 /* ... */ 注釋方式上還有所限止:
單引號和雙引號被用來標志一個被引用字符串的開始,即使是在一個注釋中。如果注釋中的引號沒有另一個引號與之配對,那和語法分析程序就不會認為注釋結束。如果你以交互式運行 mysql,你會產生困惑,因為提示符從 mysql 變為 ' 或 "。
一個分號被用于指出當前 SQL 語句的結束并且跟隨它的任何東西表示下一行的開始。
不論你是以交互式運行 mysql 還是將命令放在一個文件中,然后以 mysql some-file 告訴 mysql 讀取它的輸入,這個限制均存在。
當前題目:mysql怎么求占比,怎么求占比數
網頁路徑:http://www.yijiale78.com/article14/hcside.html
成都網站建設公司_創新互聯,為您提供自適應網站、響應式網站、靜態網站、手機網站建設、企業網站制作、網站維護
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯