2014-10-26 3 views
0

Я читал много о отчетах кросс-таблицы (сводных таблицах) в PHP, и я пытался завершить отчет, но я застрял.MySQL/PHP для генерации значений по дате

У меня есть таблица DB с report_date, employee_name, employee_id, leader_name, leader_id, employee_dept, stat1, stat2, stat3, stat4, stat5, stat6.

То, что я пытаюсь сделать, - это запросить и вернуть сумму и деление значений на основе выбранного диапазона report_date. Поэтому, если я хочу запрашивать данные между 10/01/2014 & 10/25/2014, мне нужно, чтобы они суммировали и делят все значения, найденные в этом диапазоне.

Это мой текущий SQL-запрос.

Select 
report_date, 
employee_name, 
employee_id, 
leader_name, 
leader_id, 
employee_dept, 
stat1, 
stat2, 
stat3, 
stat4, 
stat5, 
stat6, 
SUM(stat2)/SUM(stat1) AS `Result Name2`, 
SUM(stat3)/SUM(stat1) AS `Result Name3`, 
SUM(stat4)/SUM(stat1) AS `Result Name4`, 
SUM(stat5)/SUM(stat1) AS `Result Name5`, 
SUM(stat6)/SUM(stat1) AS `Result Name6` 
FROM daily_records 
GROUP BY report_date, employee_id 

Может быть слишком много, чтобы спросить, но как я могу использовать это в PHP для запроса суммы от выбранного диапазона report_date?

Edited добавить Sample данные:

DB таблица данных

report_date employee_id employee_name employee_dept STAT1 STAT2 STAT3 STAT4 STAT5 STAT6 leader_name leader_id 
9/11/2014 1983122  emp_name1 ARK  17 7941 191 5 8137 2 Name  1001 
9/11/2014 1983130  emp_name2 ARK  11 5067 516 3 5586 1 Name  1001 
9/11/2014 1983138  emp_name3 ARK  3 184 16 4 204 1 Name  1001 
9/11/2014 1983138  emp_name4 ARK  12 2576 7 6 2589 2 Name  1002 
9/11/2014 1983138  emp_name5 ARK  21 9069 400 139 9608 1 Name  1002 
9/11/2014 1983328  emp_name6 ARK  69 17929 1893 1096 20918 1 Name  1002 
9/11/2014 1983349  emp_name7 ARK  12 2259 17 112 2388 2 Name  1002 
9/11/2014 1983349  emp_name8 ARK  23 8194 880 211 9285 2 Name  1003 
9/11/2014 1983829  emp_name9 ARK  81 16175 1431 311 17917 2 Name  1003 
9/11/2014 1983888  emp_name10 ARK  7 1442 22 9 1473 1 Name  1003 
9/12/2014 1983122  emp_name1 ARK  35 6823 774 22 7619 1 Name  1001 
9/12/2014 1983642  emp_name2 ARK  80 18268 1439 135 19842 2 Name  1001 
9/12/2014 1983643  emp_name3 ARK  55 20321 962 466 21749 1 Name  1001 
9/12/2014 1983677  emp_name4 ARK  72 16379 1157 418 17954 2 Name  1002 
9/12/2014 1983682  emp_name5 ARK  17 5017 419 425 5861 1 Name  1002 
9/12/2014 1983978  emp_name6 ARK  48 9898 228 94 10220 1 Name  1002 

(я пытался вставить таблицу с соответствующим форматом, но я не мог)

Статистика 2 до 6 должны делиться на stat 1, чтобы получить результат для каждого поля. например: stat2/stat1 AS Result Name

Сообщите мне, если вам нужно что-нибудь еще.

Заранее спасибо

+1

Просьба представить некоторые примеры данных и точный результат вы ищете на основе выборочных данных – peterm

+0

я добавил некоторые выборочные данные из таблицы SQL. 2 дня. Извините, я не мог форматировать таблицу лучше. – BlueSun3k1

+0

Посмотрите даты в mysql, а затем вернитесь к нам. – Strawberry

ответ

1

Сначала вы должны использовать DATE тип для даты. После этого добавьте условие даты запроса;

Select 
report_date, 
employee_name, 
employee_id, 
leader_name, 
leader_id, 
employee_dept, 
stat1, 
stat2, 
stat3, 
stat4, 
stat5, 
stat6, 
SUM(stat2)/SUM(stat1) AS `Result Name2`, 
SUM(stat3)/SUM(stat1) AS `Result Name3`, 
SUM(stat4)/SUM(stat1) AS `Result Name4`, 
SUM(stat5)/SUM(stat1) AS `Result Name5`, 
SUM(stat6)/SUM(stat1) AS `Result Name6` 
FROM daily_records 
WHERE report_date >= "2014-10-01" 
OR report_date <= "2014-10-25" 
GROUP BY employee_id` 
Смежные вопросы