2016-06-01 6 views
0

私はテーブルを持っており、それをいくつかのグラフを作成するように操作しました。ここでは、元のテーブルMySQLのmanpulatedテーブルの2つのカラムの最大値を得る方法

select * from traffic_user_daily; 
    +-------------------+------------+-------+---------+----------+ 
    | username   | cdate  | chour | bytesin | bytesout | 
    +-------------------+------------+-------+---------+----------+ 
    | 00:09:df:89:81:f2 | 2016-05-27 | 16 | 16469 | 10321 | 
    | 00:09:df:89:81:f2 | 2016-05-27 | 18 | 599161 | 121796 | 
    | 00:09:df:89:81:f2 | 2016-05-27 | 19 | 21058 | 11141 | 
    | 00:09:df:89:81:f2 | 2016-05-28 | 08 | 20608 | 72061 | 
    | 00:09:df:89:81:f2 | 2016-05-28 | 09 | 359375 | 176809 | 

であり、私はこのようなサイムクエリを実行します。

SELECT CONCAT(cdate,' ',chour,':00:00') AS ctime ,sum(bytesin*0.000002222) as totalKbpsin, sum(bytesout*0.000002222) as totalKbpsout FROM traffic_user_daily group by cdate,chour HAVING ctime >= now() - INTERVAL 1 DAY 

    +---------------------+----------------+----------------+ 
    | ctime    | totalKbpsin | totalKbpsout | 
    +---------------------+----------------+----------------+ 
    | 2016-05-31 10:00:00 | 1230.390102018 | 772.301406580 | 
    | 2016-05-31 11:00:00 | 2554.907603688 | 1185.870290000 | 
    | 2016-05-31 12:00:00 | 2260.437353658 | 295.407289650 | 
    | 2016-05-31 13:00:00 | 3031.315984752 | 316.283035200 | 
    | 2016-05-31 14:00:00 | 3872.374530486 | 720.599486178 | 

をしかしtotalKbpsinとtotalKbpsout列のMAX値を取得する方法を知りません。 あなたは私を助けることができますか? よろしく、あなたのサンプルデータで

+0

あなたの期待どおりの結果は? | – Blank

+0

| 2016-05-31 11:00:00 | | 2554.907603688 | 1185.870290000 | AND | 2016-05-31 14:00:00 | | 3872.374530486 | 720.599486178 |それでは、PHPを使って11851870と3872.374を得ることができます – TFC

+0

'ctime> = now() - INTERVAL 1 DAY'のところで' select * from traffic_user_dailyの結果を投稿できますか? – Blank

答えて

0

$ query_IO = "

SELECT MAX(totalKbpsin),MAX(totalKbpsout) 
    FROM 
     (SELECT CONCAT(cdate,' ',chour,':00:00') AS ctime ,sum(bytesin*0.000002222) as totalKbpsin, 
       sum(bytesout*0.000002222) as totalKbpsout 
      FROM traffic_user_daily 
      group by cdate,chour 
      HAVING ctime >= now() - INTERVAL 1 DAY 
    ) a 

"。

私の問題を解決しました。 あなたの支援のためにThnaks ...

1

、これを試してみてください;)私はそれを解決し

SELECT main.ctime, main.totalKbpsin, main.totalKbpsout 
FROM(
    SELECT CONCAT(cdate,' ',chour,':00:00') AS ctime, SUM(bytesin*0.000002222) AS totalKbpsin, SUM(bytesout*0.000002222) AS totalKbpsout 
    FROM traffic_user_daily 
    GROUP BY cdate,chour 
    HAVING ctime >= NOW() - INTERVAL 1 DAY) main 
INNER JOIN (
    SELECT MAX(totalKbpsin) AS totalKbpsin 
    FROM (
     SELECT CONCAT(cdate,' ',chour,':00:00') AS ctime, SUM(bytesin*0.000002222) AS totalKbpsin, SUM(bytesout*0.000002222) AS totalKbpsout 
     FROM traffic_user_daily 
     GROUP BY cdate,chour 
     HAVING ctime >= NOW() - INTERVAL 1 DAY) tmp 
) maxsin ON main.totalKbpsin = maxsin.totalKbpsin 
UNION ALL 
SELECT main.ctime, main.totalKbpsin, main.totalKbpsout 
FROM(
    SELECT CONCAT(cdate,' ',chour,':00:00') AS ctime, SUM(bytesin*0.000002222) AS totalKbpsin, SUM(bytesout*0.000002222) AS totalKbpsout 
    FROM traffic_user_daily 
    GROUP BY cdate,chour 
    HAVING ctime >= NOW() - INTERVAL 1 DAY) main 
INNER JOIN (
    SELECT MAX(totalKbpsout) AS totalKbpsout 
    FROM (
     SELECT CONCAT(cdate,' ',chour,':00:00') AS ctime, SUM(bytesin*0.000002222) AS totalKbpsin, SUM(bytesout*0.000002222) AS totalKbpsout 
     FROM traffic_user_daily 
     GROUP BY cdate,chour 
     HAVING ctime >= NOW() - INTERVAL 1 DAY) tmp 
) maxsout ON maxsout.totalKbpsout = main.totalKbpsout 
0

$query_IO ="SELECT MAX(totalKbpsin),MAX(totalKbpsout) FROM (SELECT CONCAT(cdate,' ',chour,':00:00') AS ctime ,sum(bytesin*0.000002222) as totalKbpsin, sum(bytesout*0.000002222) as totalKbpsout FROM traffic_user_daily group by cdate,chour HAVING ctime >= now() - INTERVAL 1 DAY) a "; 
1

GREATEST()関数を使用できます。

select GREATEST(MAX(totalKbpsin),MAX(totalKbpsout)) from table_a 
関連する問題