[英]Calculate percentage with MySQL
我有以下表格结构
语言:
id | language
1 | English
2 | Dutch
翻译:
id | translation_id | translation | language_id
1 | | Username | 1
2 | | Password | 1
3 | 2 | Wachtwoord | 2
我尝试了以下查询以获取每种语言的概述:
SELECT
`languages`.`id`,
`language`
concat( round( ( COUNT(`translations`.`languages_id` = 1) / COUNT(`translations`.`languages_id` = 2)) * 100, 0), '%') AS `percentage`
FROM `languages`
JOIN `translations`
ON `languages`.`id` = `translations`.`languages_id`
但是由于某种原因,我只能获得100%的百分比。 我希望荷兰人能获得50%的收入。
我现在得到的结果就是
[id] => 1 [language] => English [percentage] => 100%
虽然我希望得到:
[id] => 1 [language] => English [percentage] => 100%
[id] => 2 [language] => Dutch [percentage] => 50%
我知道我没有英文链接。
在这种情况下,英语是默认语言,因此,每隔一种语言将100%占英语的一定百分比。 这就是为什么我希望荷兰人占50%。
同样,如果不对每种语言进行相同的查询,就不可能获得每种语言的百分比吗? 就像仅选择ID和语言一样,您将同时获得2, Dutch
和1, English
行。
您可以找到每种语言的行数,然后将其除以英语数,如下所示:
尝试这个:
select l.*, concat(round(100 * count(t.languages_id) / t2.cnt,0),'%')
from languages l
left join translations t
on l.id = t.languages_id
cross join (
select count(*) cnt
from translations
where languages_id = 1
) t2
group by l.id;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.