Перебирая таблицу sql и вычисляя цифры в php

У меня есть простой вопрос, но я не могу понять, как это сделать.

Employee id | dev_time | pm_time
1           |    4     |    5
2           |    2     |    3
3           |    6     |    2
2           |    3     |    6
3           |    4     |    4
1           |    1     |    5

У меня есть таблица на моем локальном хосте, которая выглядит следующим образом. Как узнать общее время (dev_time + pm_time), потраченное каждым сотрудником? Мне требуются как оператор SQL, так и решение для циклов while/for/foreach

Например, employee_id 1 потратил всего 15 часов, или employee_id 2 потратил всего 14 часов

Спасибо!!!!!

3 ответа

Попробуй это:

  select employee_id, sum(dev_time + pm_time) as totalhours
    from mytable
group by employee_id

Пример вывода ( ДЕМО):

EMPLOYEE_ID | TOTALHOURS
1             15
2             14
3             16

I require both the SQL statement and the while/for/foreach loops solution

Ну, у меня для тебя плохие новости. Вместо прямого кода, я дам вам несколько ссылок, чтобы вы могли сами это понять.

Прежде всего, вы хотите изучить основные операторы SQL. Тогда вы увидите, что SQL-выражение, которое вы хотите получить желаемый эффект, не так сложно вывести самостоятельно.

Во-вторых, я дам вам текстовое описание:

Query all tuples from the database

Loop through each one, first grabbing their dev_time value, and summing it with their pm_time value.

Store the sum value somewhere

Как упоминал Конрад Фриз, это текстовое описание может привести к "N+1 Выбор проблемы", и это можно сделать в одном утверждении, как вы, надеюсь, уже решили.

Надеюсь, вы воспользуетесь этим подходом, а не просто копируете и вставляете код.

Вы можете сделать это прямо в SQL, я не уверен, какую СУБД вы используете, но в MySQL это:

SELECT *, (dev_time+pm_time) AS total FROM table_name
Другие вопросы по тегам