SELECT
g.`name` '业务组',
case q.`type`
WHEN "QUOTA_TYPE_MACHINE_SERVER_NUMBER" then ('虚机数量')
WHEN "QUOTA_TYPE_MACHINE_CPU" then 'CPU'
WHEN "QUOTA_TYPE_MACHINE_MEMORY" then ('内存')
else ('存储')
END '类型',
q.`total` '配额',
q.`used` '已使用',
q.`total`-q.`used` '剩余',
CONCAT(round(q.`used`/q.`total`*100,2), '%') '使用率'
FROM `business_group` g, `business_group_quota` q
WHERE g.`id` = q.`business_group_id`
现在需要将内存和存储的单位转换为G
更新,用case这个方法,但是他不进行计算啊
SELECT
g.`name` '业务组',
CASE q.`type`
WHEN "QUOTA_TYPE_MACHINE_SERVER_NUMBER" then ('虚机数量')
WHEN "QUOTA_TYPE_MACHINE_CPU" then 'CPU'
WHEN "QUOTA_TYPE_MACHINE_MEMORY" then ('内存')
ELSE ('存储')
END '类型',
CASE q.`total`
WHEN q.`type` = 'QUOTA_TYPE_MACHINE_MEMORY' THEN ROUND(q.`total`/1024/1024/1024)
WHEN q.`type` = 'QUOTA_TYPE_MACHINE_STORAGE' THEN ROUND(q.`total`/1024/1024/1024)
ELSE q.`total`
END'配额',
q.`used` '已使用',
q.`total`-q.`used` '剩余',
CONCAT(ROUND(q.`used`/q.`total`*100,2), '%') '使用率'
FROM `business_group` g, `business_group_quota` q
WHERE g.`id` = q.`business_group_id`
那你再写case when then,如果是内存或硬盘,就q.total/1024/1024/1024
转换成G直接把查询的结果除法计算对应的单位就行
q.total
/1024 '配额',
q.used
/1024 '已使用'
q.total
-q.used
剩余
使用率就是 已使用/配额
q.used
/q.total
'使用率',
case type when '存储' then (CAST(total AS SIGNED integer)/1024/1024/1024) when '内存' then (CAST(total AS SIGNED integer)/1024/1024/1024) else total end '配额'
同样用case when的方法,对内存和存储这两种类型的 配额/1024 ,else其它类型就不除1024
SELECT
bg.name "业务组",
cpu.total "cpu配额(核)",
cpu.used "cpu已用(核)",
ROUND(cpu.used/cpu.total*100, 2) "cpu使用率(%)",
servernu.total "虚机配额(台)",
servernu.used "虚机已用(台)",
ROUND(servernu.used/servernu.total*100, 2) "虚机使用率(%)",
ROUND(mem.total/1024, 0) "内存配额(GB)",
ROUND(mem.used/1024, 0) "内存已用(GB)",
ROUND(mem.used/mem.total*100, 2) "内存使用率(%)",
ROUND(disk.total/1024/1024/1024, 0) "存储配额(GB)",
ROUND(disk.used/1024/1024/1024, 0) "存储已用(GB)",
ROUND(disk.used/disk.total*100, 2) "存储使用率(%)"
FROM
business_group bg
JOIN (SELECT bgq.used, bgq.total,bgq.business_group_id from business_group_quota bgq where bgq.type = "QUOTA_TYPE_MACHINE_CPU" ) as cpu on cpu.business_group_id = bg.id
JOIN (SELECT bgq.used, bgq.total,bgq.business_group_id from business_group_quota bgq where bgq.type = "QUOTA_TYPE_MACHINE_MEMORY" ) as mem on mem.business_group_id = bg.id
JOIN (SELECT bgq.used, bgq.total,bgq.business_group_id from business_group_quota bgq where bgq.type = "QUOTA_TYPE_MACHINE_STORAGE" ) as disk on disk.business_group_id = bg.id
JOIN (SELECT bgq.used, bgq.total,bgq.business_group_id from business_group_quota bgq where bgq.type = "QUOTA_TYPE_MACHINE_SERVER_NUMBER" ) as servernu on servernu.business_group_id = bg.id
感谢各位老师的指导,同事给了另一个思路要简单一些,发出来仅作参考。