【发布时间】:2013-03-22 17:20:28
【问题描述】:
我有一个 MySQL 数据库,其中包含 4 个项目:id(数字)、group_name、employees 和 surveys。
在我的SELECT 中,我需要根据“调查”中的人数计算参与调查的“员工”的百分比。
这是我现在的声明:
SELECT
group_name,
employees,
surveys,
COUNT( surveys ) AS test1,
((COUNT( * ) / ( SELECT COUNT( * ) FROM a_test)) * 100 ) AS percentage
FROM
a_test
GROUP BY
employees
这是当前的表格:
INSERT INTO a_test (id, group_name, employees, surveys) VALUES
(1, 'Awesome Group A', '100', '0'),
(2, 'Awesome Group B', '200', '190'),
(3, 'Awesome Group C', '300', '290');
我很想用surveys 中的数字计算employees 参加调查的百分比。即如上图所示,Awesome Group A 为 0%,Awesome Group B 为 95%。
【问题讨论】:
-
不应使用此
GROUP BY做法。它是非标准的,会产生不希望的结果。 -
样本数据和您希望的结果可能吗?
-
这是当前的表格:'INSERT INTO
a_test(id,group_name,employees,surveys) VALUES (1, 'Awesome Group A', ' 100', '0'), (2, 'Awesome Group B', '200', '190'), (3, 'Awesome Group C', '300', '290');'我很想通过“调查”中的人数来计算参加调查的“员工”的百分比。像 Awesome Group A 这样的 IE 将是 0%,Awesome Group B 将是 95% -
@Thomas MySQL chooses which fields to
GROUP BYas it feels。所有其他平台都要求SELECT中的非聚合字段出现在GROUP BY中。 MySQL 不遵循这个标准。 -
@Thomas 只是补充一点,它不是按感觉选择的字段,而是它选择显示的非组字段的值。在 5.8(也可能是 5.7)中,行为现在与其他数据库一致。如果您依赖它,非标准行为很有用,但很危险。
标签: mysql percentage