繁体   English   中英

用MySQL计算百分比

[英]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, Dutch1, 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM