1

次のクエリを使用してレポートを作成しようとしています。

SELECT
    DATE_FORMAT(date, '%Y-%m-%d') AS 'Date',
    CONCAT(UCASE(MID(name,1,1)),MID(name,2)) AS 'Username',
    COUNT(admin_id) AS 'Surveys Carried Out'
FROM
    `customer_surveys`
LEFT JOIN `admin` ON customer_surveys.admin_id = admin.adminid
GROUP BY DATE_FORMAT(date, '%Y-%m-%d')

日付(日ごとのレポートであるため)とadmin_id(そのIDによって実行された調査の数であるため)でグループ化する必要があります。

これは理論的には機能するはずです。しかし、返されるものを見て、実際のデータと比較すると、毎日表示されていますが、admin_idsがマージされているため、その日に最初に発生したものが表示されます。何か助けはありますか?

4

3 に答える 3

3

すべての管理者の日付の記録を表示する場合は、少なくとも日付と admin_id でグループ化する必要があります

GROUP BY DATE_FORMAT(date, '%Y-%m-%d'), admin_id
于 2013-02-04T15:03:24.403 に答える
1

を追加するだけでよいようですGROUP BY admin_id

SELECT
    DATE_FORMAT(date, '%Y-%m-%d') AS 'Date',
    CONCAT(UCASE(MID(name,1,1)),MID(name,2)) AS 'Username',
    COUNT(admin_id) AS 'Surveys Carried Out'
FROM `customer_surveys`
LEFT JOIN `admin` 
   ON customer_surveys.admin_id = admin.adminid
GROUP BY DATE_FORMAT(date, '%Y-%m-%d'), admin_id

両方でグループ化すると、 と で値が得られDATE_FORMAT(date, '%Y-%m-%d')ますadmin_id

于 2013-02-04T15:03:34.393 に答える
1

グループ内のすべての非集計は必要ありませんか? Concat は集合体ではありません

SELECT
    DATE_FORMAT(date, '%Y-%m-%d') AS 'Date',
    CONCAT(UCASE(MID(name,1,1)),MID(name,2)) AS 'Username',
    COUNT(admin_id) AS 'Surveys Carried Out'
FROM
    `customer_surveys`
LEFT JOIN `admin` ON customer_surveys.admin_id = admin.adminid
GROUP BY DATE_FORMAT(date, '%Y-%m-%d'), CONCAT(UCASE(MID(name,1,1)),MID(name,2))
于 2013-02-04T15:04:06.243 に答える