Как мне сгруппировать по DAYOFWEEK и использовать сгруппированные данные в MySQL? - PullRequest
0 голосов
/ 09 марта 2012

Я знаю достаточно MySQL, чтобы делать простые объединения, но мне не хватает знаний, когда дело доходит до чего-то продвинутого. Я знаю, что мог бы убрать строки в PHP, но я считаю, что правильное выполнение запроса более чисто.

Что я сейчас делаю:

Запрос:

SELECT DAYOFWEEK(r.`date`) AS weekNumber,  r.`date`AS scoreDate, qf.target, r.totalScore FROM results;

Результат:

weekNumber, scoreDate, target, totalScore
4, '2012-02-29', 85, 100
3, '2012-03-06', 85, 100
3, '2012-03-06', 85, 75
3, '2012-03-06', 85, 42

Возможно ли:

  • группировка по номеру недели,
  • изменить дату счета, чтобы показать «с и до»,
  • Подведите итог цели и разделите на количество строк, сгруппированных вместе
  • и то же самое для totalScore, что и с целевыми показателями?

Результат, который я хотел бы получить из запроса:

weekNumber, scoreDate, target, totalScore
4, '2012-02-29 to 2012-02-29', 85, 100
3, '2012-03-06 to 2012-03-06', 85, 72.3

Может ли кто-нибудь помочь мне создать запрос или сказать, как я могу получить результат, который я ищу?

Спасибо!

1 Ответ

1 голос
/ 09 марта 2012
SELECT q1, AVG(q2) as target, max(q3) as `end`, MIN(q3) as `start` from q GROUP BY q1

запрос выше должен делать то, что вы хотите.просто измените q1 - q3 со своих полей.и q с вашим именем таблицы.

результат:

________________________________________
| q1 | target | end        | start     |
----------------------------------------
| 3  | 8.0000 | 2012-03-09 | 2012-03-08|
----------------------------------------
| 4  | 2.0000 | 2012-03-07 | 2012-03-07|

База данных:

________________________
| q1 | q2 | q 3        | 
------------------------
| 3  | 7  | 2012-03-09 |
| 3  | 9  | 2012-03-08 |
| 4  | 2  | 2012-03-07 |

источник: http://www.w3schools.com/sql/sql_func_avg.asp

...