选择收入较高的员工

  • 本文关键字:选择 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 ;

选择所有员工,加入他们的"服务",然后按员工 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

最新更新