2

私は、2つの行から複数​​の列のMAXを選択できるようにする必要があるものに取り組んでいます。これらの列は、でグループ化された別のテーブルのIDで一致しますFROM_UNIXTIME(date, "%m%")

SQLFiddleの例

上記のSQLFiddleの例をまとめました。

この例では、2つのテーブルPairsData。ペアはid(非主キー)によって結合されます。したがって、TestDeviceA両方TestDeviceBともid1です。両方ともTestDeviceC2です。TestDeviceDid

表内の個別の日付ごとに、2つのデバイス間の列の最大値、列の最大値、およびの同じData値をプルする必要があります。data1data2data3

例:

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

クエリに何か足りないものがあるように感じます。

それにアプローチするためのより効率的で正確な方法は何でしょうか?

4

1 に答える 1

0

私が遭遇した問題は、私の列data2data3列はbinary(16)(インターフェース統計からのバイトを保存します)でした。

追加する必要がありました:

MAX(cast(s.data2 as unsigned integer)) as data2
于 2013-01-10T16:10:12.293 に答える