Группировать по неделям и выбирать записи текущей недели - PullRequest
3 голосов
/ 21 сентября 2011

Я пытался отобразить таблицу результатов для еженедельных продаж с использованием MySQL, где результаты недели должны быть такими:

Sun - Mon - Tues - Wed - Thur - Fri - Sat

Итак, я использовал этот запрос:

SELECT DATE_FORMAT(cart_calendar.datefield, '%d-%b') AS DATE
        , IFNULL(SUM(cart_daily_sales.quantity),0) AS total_sales 
FROM cart_daily_sales 
RIGHT JOIN cart_calendar 
         ON (DATE(cart_daily_sales.order_date) = cart_calendar.datefield)
WHERE (cart_calendar.datefield) 
GROUP BY WEEK(cart_calendar.datefield)

Я знаю, что я почти на месте, так как выводятся все 52 недели в году, я хочу получить результат только текущей недели, в отличие от приведенного выше кода, который приводит к этому ...

'02-Jan', '09-Jan', '16-Jan', '23-Jan', '30-Jan', '06-Feb', '13-Feb', '20-Feb', '27-Feb', '06-Mar' e.t.c....

Я знаю, что могу использовать оператор BETWEEN для текущей даты и затем -7 дней, но это не показывает текущую неделю, если сегодняшний день - среда, он покажет последние семь дней до последних недель среды, а не правильную неделю структура. * +1010 *

Как отобразить сгруппированные за неделю продажи за неделю?

1 Ответ

2 голосов
/ 21 сентября 2011
 SELECT DATE_FORMAT(cc.datefield, '%d-%b') AS DATE
        , SUM(IFNULL(cds.quantity,0)) AS total_sales 
 FROM cart_calendar cc
 INNER JOIN cart_daily_sales cds
         ON (DATE(cds.order_date) = cc.datefield)
 WHERE WEEK(cc.datefield) = WEEK(now())
 GROUP BY WEEK(cc.datefield)

Или, если хотите, за день:

 SELECT DATE_FORMAT(cc.datefield, '%d-%b') AS DATE
        , SUM(IFNULL(cds.quantity,0)) AS total_sales 
 FROM cart_calendar cc
 INNER JOIN cart_daily_sales cds
         ON (DATE(cds.order_date) = cc.datefield)
 WHERE WEEK(cc.datefield) = WEEK(now())
 GROUP BY MOD(WEEKDAY(cc.datefield)+1,6) WITH ROLLUP
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...