@Helo8989

Как получить сумму значений из столбца и помножить на число которое вводится с клавиатуры?

Имеется база данных сотрудников в одной таблице. Подключение через Java, JavaFx. Есть четыре колонки: id, name, salary , percent. С клавиатуры нужно ввести число которое будет умножаться на salary, потом умножается на percent и выводится на экран значение по каждому сотруднику. Далее все полученые значения суммируются и выводятся в отдельную форму. Не могу понять как все лучше обьединить. Возможно стоит добавить сначала еще однин вычисляемый столбец, чтобы в него сначала помещалась сумма salary * percent а потом уже множить на вводимое с клавиатуры значение? Ну и вконце сделать отдельный запрос на суммирование? Начинаю узучать данную тему и буду очень благодарен за советы
  • Вопрос задан
  • 136 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Aricus
Не надо никаких вычисляемых столбцов, всё можно сделать в рамках запроса. JAVA я не знаю, приведу на PHP, но, думаю, суть будет понятна. Запрос будет примерно такой:
"SELECT name, salary * percent * ".(int)$_POST['val']." AS value FROM table WHERE 1=1"

Суммирование, думаю, лучше сделать уже через JAVA: чем меньше запросов, тем лучше. Но можно и отдельный запрос:
"SELECT SUM(salary * percent * ".(int)$_POST['val'].") AS sum FROM table WHERE 1=1"
Ответ написан
Комментировать
rozhnev
@rozhnev Куратор тега SQL
Fullstack programmer, DBA, медленно, дорого
Можно всё вытащить одним запросом:
SELECT 
	COALESCE(name, 'Total') AS name,
	SUM(salary * percent * 3) AS result 
FROM salaries
GROUP BY name
WITH ROLLUP;


SQL fiddle here

PHP code:
<?php
$query = "SELECT 
		COALESCE(name, 'Total') AS name,
		SUM(salary * percent * :multiplayer) AS result 
	FROM salaries
	GROUP BY name
	WITH ROLLUP;";
$stmt = $pdo->prepare($query);
$stmt->execute(['multiplayer' => 3]);

$result = $stmt->fetchALL(PDO::FETCH_ASSOC);

var_export($result);


PHP fiddle
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы