选择获得更多收入的员工

时间:2014-01-18 00:05:29

标签: mysql

[MySQL]我想选择赚得更多的员工,问题是我使用的是两张桌子。

最后我不知道该怎么做。

我构建了一个可以计算服务数量并按大多数排序的查询,但查询存在缺陷,因为服务具有更高的值。

这是表结构。

CREATE TABLE IF NOT EXISTS `contas` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_servico` int(11) DEFAULT NULL,
  `id_funcionario` int(11) DEFAULT NULL,
  `data` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=28 ;


CREATE TABLE IF NOT EXISTS `servicos` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `titulo` varchar(250) NOT NULL COMMENT 'Título do serviço',
  `descri` mediumtext COMMENT 'uma pequena descrição do serviço',
  `valor` varchar(10) NOT NULL COMMENT 'valor bruto do serviço',
  `comissao` varchar(10) DEFAULT NULL COMMENT 'comissão por funcionario',
  `data` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;

1 个答案:

答案 0 :(得分:0)

选择所有员工,加入他们的“服务”,然后按员工ID分组,汇总他们的收入并选择第一个。

SELECT E.id, SUM(S.amount) AS income
FROM employee E
INNER JOIN service S ON S.employee_id = E.id
GROUP BY E.id
ORDER BY income DESC
LIMIT 1