No meu banco de dados MYSQL EMPRESA, tenho uma tabela: Worker
:
mysql> DESC `Worker`;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| SSN | varchar(64) | NO | | NULL | |
| name | varchar(64) | YES | | NULL | |
| salary | int(11) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
Eu criei usando o seguinte comando do MySQL:
CREATE TABLE `Worker` (
`SSN` varchar(64) NOT NULL,
`name` varchar(64) DEFAULT NULL,
`salary` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
A tabela com os seguintes dados:
mysql> SELECT * FROM `Worker` ORDER BY salary ASC;
+-----+---------+--------+
| SSN | name | salary |
+-----+---------+--------+
| 6 | TWO | 50 |
| 5 | ONE | 100 |
| 1 | Grijesh | 200 |
| 3 | Sumit | 250 |
| 2 | Rahul | 300 |
| 4 | Harsh | 500 |
| 7 | THREE | 1000 |
+-----+---------+--------+
7 rows in set (0.00 sec)
sua consulta de inserção:
INSERT INTO `Worker`
(SSN, name, salary)
VALUES
("1", "Grijesh", 200),
('2','Rahul',300),
('3','Sumit',250),
('4','Harsh',500),
('5','ONE','100'),
('6','TWO',50),
('7','THREE',1000);
[PERGUNTA]
Eu quero selecionar primeiro n workers
( na lista asc ) a soma do salário é pouco mais de 500 (> 500). por exemplo:
os quatro trabalhadores seguintes são os primeiros funcionários de baixo salário e com SOMA de salário 600. (600 > 500)
| 6 | TWO | 50 |
| 5 | ONE | 100 |
| 1 | Grijesh | 200 |
| 3 | Sumit | 250 |
Eu preciso de algo como SELECT * FROM
Worker WHERE SUM(salary) < 501 ASC;
(sua consulta incorreta)
Pode-se supor que todos tenham salários diferentes.
é algo como corte de custos: remova funcionários que são relativamente sem importância
Uma sugestão ou link para ler será útil