0

次のMySQLクエリは、さまざまな日付のユーザーごとのすべての週のデータを取得します。

SELECT user_id,
       CONCAT(follow_up_date, ' - ', follow_up_date + INTERVAL 6 day) AS week,
       GROUP_CONCAT(follow_up_date)
FROM   feedback_2
WHERE  follow_up_date > ''
GROUP  BY WEEK(follow_up_date),
          user_id

出力:

---------------------------------------------------------------
user_id |         week           | group_concat(follow_up_date)|
---------------------------------------------------------------
4        2012-08-28 - 2012-09-03 | 2012-08-28,2012-08-28,2012-08-29
14       2012-08-28 - 2012-09-03 | 2012-08-28 

しかし、私の要件は、同じユーザーの異なる日付をどのように分離するかです。

---------------------------------------------------------------
user_id |         week           | group_concat(follow_up_date)|
---------------------------------------------------------------
4        2012-08-28 - 2012-09-03 | 2012-08-28,2012-08-28
4        2012-08-28 - 2012-09-03 | 2012-08-29
14       2012-08-28 - 2012-09-03 | 2012-08-28 
4

2 に答える 2

1

テストされていませんが、試してみることができます:

SELECT user_id,
       _CONCAT(DATE_SUB(follow_up_date, INTERVAL _DAYOFWEEK(follow_up_date)-3
                                        day),
       ' - ', DATE_SUB(follow_up_date, INTERVAL _DAYOFWEEK(follow_up_date)-3 day
              )
       + INTERVAL 6 day) AS week,
       GROUP_CONCAT(follow_up_date)
FROM   feedback_2
WHERE  follow_up_date > ''
GROUP  BY WEEK(follow_up_date)

_クエリが正しくなるように、式の単語の一部が始まるときに文字を削除してください。

于 2012-08-30T06:16:04.557 に答える
1
SELECT  `user_id`, 
        CONCAT(`follow_up_date`, ' - ', `follow_up_date` + INTERVAL 6 DAY) AS f_week, 
        GROUP_CONCAT(`follow_up_date`) AS c_date
FROM feedback_2 
WHERE `follow_up_date` > ''
GROUP BY f_week, `user_id`
ORDER BY  `user_id`, f_week
于 2012-08-30T06:37:32.723 に答える