0

3つのフィールドを持つテーブルがあります。このテーブルは、過去 30 日間の関連国への毎日の通話時間の記録を保持します。

C_Date      Country         C_Time  
2012-10-01  India           1316
2012-10-01  USA             12  
2012-10-01  UK              132     
2012-10-01  Kuwait          134     
2012-10-02  UK              135     
2012-10-02  USA             136     
2012-10-02  Singapore       137     

このレコードを使用してテーブルと折れ線グラフを生成する必要があり、MySQL クエリを記述しようとしました。基本的に、これは選択した国に対してのみ描画する必要があります。
インド、アメリカ、イギリスが欲しいとしましょう。次に、次のようなレコード セットをプルする必要があります。

C_Date     | Calling_Time
-----------+----------------------------------
2012-10-01 | 1316,12,132
2012-10-02 | 0,136,135
2012-10-03 | ...
...        | ...

これは私のクエリです:

SELECT C_Date, GROUP_CONCAT(C_Time
ORDER BY Country
SEPARATOR ',') as Calling_Time
FROM Call_Table t
WHERE Country
IN ('India', 'USA', 'UK')
GROUP BY C_Date
ORDER BY  C_Date

結果ははるかに近くなりましたが、空の結果は無視されました。

C_Date     | Calling_Time
-----------+----------------------------------
2012-10-01 | 1316,12,132
2012-10-02 | 136,135   (expected 0,136,135)

Calling_Time を0,136,135 OR ,136,135 OR null, 136,135 のように取得するようにクエリを変更できますか? (各国を表す一意のセグメント数を使用)

前もって感謝します!

4

2 に答える 2

2
SELECT   aa.C_Date, 
         GROUP_CONCAT(COALESCE(bb.C_Time,0) ORDER BY bb.Country) Calling_Time
FROM
(
    SELECT a.Country, b.C_DATE
    FROM
          ( 
              SELECT DISTINCT Country
              FROM TableName t
              WHERE Country IN ('India', 'USA', 'UK')
          ) a CROSS JOIN
          (
              SELECT DISTINCT DATE(C_Date) C_Date
              FROM TableName t    
          ) b
) aa LEFT JOIN TableName bb
     ON aa.Country = bb.Country AND
        aa.C_DATE = DATE(bb.C_DATE)
GROUP BY aa.C_Date
于 2012-11-05T08:09:03.223 に答える
2

このクエリを試してください -

SELECT
  C_Date,
  CONCAT(MAX(IF(country = 'India', C_Time, 0)), ',',
         MAX(IF(country = 'USA', C_Time, 0)), ',',
         MAX(IF(country = 'UK', C_Time, 0))) Calling_Time
  FROM call_table
  GROUP BY C_Date

+------------+--------------+
| C_Date     | Calling_Time |
+------------+--------------+
| 2012-10-01 | 1316,12,132  |
| 2012-10-02 | 0,136,135    |
+------------+--------------+
于 2012-11-05T08:06:04.843 に答える