私は、2つの行から複数の列のMAXを選択できるようにする必要があるものに取り組んでいます。これらの列は、でグループ化された別のテーブルのIDで一致しますFROM_UNIXTIME(date, "%m%")
。
上記のSQLFiddleの例をまとめました。
この例では、2つのテーブルPairs
とData
。ペアはid
(非主キー)によって結合されます。したがって、TestDeviceA
両方TestDeviceB
ともid
1です。両方ともTestDeviceC
2です。TestDeviceD
id
表内の個別の日付ごとに、2つのデバイス間の列の最大値、列の最大値、およびの同じData
値をプルする必要があります。data1
data2
data3
例:
date | device | data1 | data2 | data3
-------------------------------------------------
1234 TestDeviceA 222 234 555
1234 TestDeviceB 292 204 155
望ましい結果は、次のようなものになります。
1234 TestDeviceA/TestDeviceB 292 234 555
クエリの例:
SELECT FROM_UNIXTIME(date, "%m"), FROM_UNIXTIME(date, "%d"), p.id as PairID, GROUP_CONCAT(device SEPERATOR '/'), MAX(data1), MAX(data2), MAX(data3)
FROM Data LEFT JOIN Pairs p on p.devicename=device
GROUP BY p.id,date
クエリに何か足りないものがあるように感じます。
それにアプローチするためのより効率的で正確な方法は何でしょうか?