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
Depois de brincar um pouco mais com isso, cheguei a esta consulta:
Isso parece fazer o que você deseja com esses dados limitados, mas pode ser muito lento em grandes conjuntos de dados.
Aqui está uma solução, mas parece feia. Pode haver uma solução melhor sem uma subconsulta.
Se você executar esta consulta no phpmyadmin, haverá um erro de exibição, que mostra BLOB para variável. Você precisará do seguinte elenco.