次の2つのクエリが異なる結果を返す理由を理解してください。クエリの違いは、GROUP BY句でDATE_FORMAT関数を使用する場合のみです。MariaDBでGROUP BY句WITH ROLLUPを使用した2つの同様のクエリの作業の相違
クエリ1:
SELECT DATE_FORMAT(T0.ET,'%Y/%m/%d %H%i'), SUM(T0.AT)
FROM(SELECT TIMESTAMPADD(second,(SEQ -1)*300, STR_TO_DATE('20170809135000','%Y%m%d%H%i%s')) ET, 1 AT
FROM SEQ_1_TO_10
WHERE SEQ <= 5) T0
group by T0.ET with rollup
結果1:
'2017/08/09 1350', '1'
'2017/08/09 1355', '1'
'2017/08/09 1400', '1'
'2017/08/09 1405', '1'
'2017/08/09 1410', '1'
NULL, '5'
クエリ2:
SELECT DATE_FORMAT(T0.ET,'%Y/%m/%d %H%i') , SUM(T0.AT)
FROM(SELECT TIMESTAMPADD(second,(SEQ -1)*300, STR_TO_DATE('20170809135000','%Y%m%d%H%i%s')) ET, 1 AT
FROM SEQ_1_TO_10
WHERE SEQ <= 5) T0
group by DATE_FORMAT(T0.ET,'%Y/%m/%d %H%i') with rollup
結果2:
'2017/08/09 1350', '1'
'2017/08/09 1355', '1'
'2017/08/09 1400', '1'
'2017/08/09 1405', '1'
'2017/08/09 1410', '1'
'2017/08/09 1410', '5'
は、両方のクエリのSELECT EXPLAIN同じです:
id, select_type, table, type, possible_keys, key, key_len, ref, rows, Extra
'1', 'SIMPLE', 'SEQ_1_TO_10', 'range', 'PRIMARY', 'PRIMARY','8', NULL, '5', 'Using where; Using index; Using filesort'
どのようなデータタイプto.etのですか? –
@ P.Salmon、ETはTIMESTAMPADDから返されるTIMESTAMPです。 – Evgenia
@ P.Salmon、任意のアイデア? – Evgenia