php - 计算从mysql到php表的不同值

标签 php mysql

如何根据从不同表收集的数据编译各种计算的结果?在 php 表中显示摘要。我的 table 上有一些人,该 table 链接到另外两个 table 。它将按部门对女性和男性的人数和百分比进行排序。他们每个部门的平均总收入是多少。女性工资占男性的比例有多大,男性和女性的工资分布有多大和最小值。

这些代码用于获取所有数据。

为了澄清起见,我手动添加了一些值 this picture 。 我已经为此苦苦挣扎了一段时间,但没有看到任何解决方案。感谢您的帮助!

最佳答案

请看下面,它并不完全符合您的需要,因为我不知道表格的结构,但您会得到一个想法:

CREATE TABLE `usergroup` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB;

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `sex` enum('yes','no') NOT NULL DEFAULT 'yes',
  `salary` decimal(10,2) DEFAULT NULL,
  `userGroupId` int(11) DEFAULT NULL,
  `name` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB;


insert into `usergroup`(`id`,`name`) values (1,'Sales');
insert into `usergroup`(`id`,`name`) values (2,'Support');
insert into `usergroup`(`id`,`name`) values (3,'Managment');
insert into `usergroup`(`id`,`name`) values (4,'Others');

insert into `user`(`id`,`sex`,`salary`,`userGroupId`,`name`) values (1,'yes',20000.00,1,'Scott');
insert into `user`(`id`,`sex`,`salary`,`userGroupId`,`name`) values (2,'yes',30000.00,1,'Peter');
insert into `user`(`id`,`sex`,`salary`,`userGroupId`,`name`) values (3,'no',20000.00,1,'Mike');
insert into `user`(`id`,`sex`,`salary`,`userGroupId`,`name`) values (4,'yes',100000.00,2,'Senior');
insert into `user`(`id`,`sex`,`salary`,`userGroupId`,`name`) values (5,'no',50000.00,2,'Junior');
insert into `user`(`id`,`sex`,`salary`,`userGroupId`,`name`) values (6,'yes',75000.00,2,'Middle');
insert into `user`(`id`,`sex`,`salary`,`userGroupId`,`name`) values (7,'yes',250000.00,3,'King');
insert into `user`(`id`,`sex`,`salary`,`userGroupId`,`name`) values (8,'yes',300000.00,3,'Ace');
insert into `user`(`id`,`sex`,`salary`,`userGroupId`,`name`) values (9,'no',200000.00,3,'Queen');
insert into `user`(`id`,`sex`,`salary`,`userGroupId`,`name`) values (10,'yes',100000.00,3,'Jack');
insert into `user`(`id`,`sex`,`salary`,`userGroupId`,`name`) values (11,'no',400000.00,3,'LadyJoker');

查询以获取报告。子查询正在选择具有统计值的数据,这些数据将在外部查询中用于计算:

select analytic.userGroupId, 
       analytic.name, 
       analytic.countMen, 
       analytic.countWomen, 
       round((analytic.countMen / analytic.countMisc)*100, 2) as percentMen,
       round((analytic.countWomen / analytic.countMisc)*100, 2) as percentWomen,
       round((analytic.maxSalaryMen + analytic.minSalaryMen)/2, 2) as basicSalaryMen,  
       round((analytic.maxSalaryWomen + analytic.minSalaryWomen)/2, 2) as basicSalaryWomen,  
       round(
                (analytic.maxSalaryMen + analytic.minSalaryMen +
                 analytic.maxSalaryWomen + analytic.minSalaryWomen
                )/4,
            2)  
       as basicSalaryMisc,  
       if(analytic.maxSalaryMen + analytic.minSalaryMen = 0, 100,
           round((analytic.maxSalaryWomen + analytic.minSalaryWomen)/(analytic.maxSalaryMen + analytic.minSalaryMen), 2)
       ) as salaryBasicWomenPercentOfMen,  
       analytic.maxSalaryMen, 
       analytic.minSalaryMen, 
       analytic.maxSalaryWomen, 
       analytic.minSalaryWomen
from (
  select ug.id as userGroupId,
         ug.name,
         sum(if(u.sex='yes', 1, 0)) countMen,
         sum(if(u.sex='no', 1, 0)) countWomen,
         count(*) countMisc,
         max(if(u.sex='yes', u.salary, null)) maxSalaryMen,
         min(if(u.sex='yes', u.salary, null)) minSalaryMen,
         max(if(u.sex='no', u.salary, null)) maxSalaryWomen,
         min(if(u.sex='no', u.salary, null)) minSalaryWomen
  from userGroup ug left join user u 
  on u.userGroupId = ug.id 
  group by ug.id, ug.name
  order by ug.name
) analytic

关于php - 计算从mysql到php表的不同值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19892264/

相关文章:

php - 无法正确创建数组

php - 将Google Analytics(分析)标签插入任意页面的最简单方法?

php - 来自 PHP 的同步 AMQP

php - 将具有多个值的多个键设置到Redis

php - 使用运算符从我的数据库中获取特定值

javascript - 使用 php 和 ajax 在表中显示查询的值

java - 给定一系列变量(A、B、C ...),如何形成 Sql 字符串 Ex "A=? and B=?...."但只考虑非空变量?

mysql - MySQL 存储过程中的数据值不正确

mysql - 具有不同查询的简单 SQL 计数

mysql - 向依赖于第一列的 SELECT 语句添加子查询?