各行にタイムスタンプのあるテーブルがある場合、この特定のjsonオブジェクト形式に合うようにクエリをどのようにフォーマットしますか。
JSONオブジェクトを年/月に整理しようとしています。
クエリのベースとなるjson:
{
"2009":["August","July","September"],
"2010":["January", "February", "October"]
}
ここに私がこれまでに持っているクエリがあります-
SELECT
MONTHNAME(t.summaryDateTime) as month, YEAR(t.summaryDateTime) as year
FROM
trading_summary t
GROUP BY MONTH(t.summaryDateTime) DESC";
クエリは、(予測して)異なる年をまとめているため、壊れています。
GROUP BY YEAR(t.summaryDateTime), MONTH(t.summaryDateTime) DESC;
あなたが望むものです。
GROUP BY DATE_FORMAT(summaryDateTime,'%Y-%m')
SELECT MONTHNAME(t.summaryDateTime) as month, YEAR(t.summaryDateTime) as year
FROM trading_summary t
GROUP BY YEAR(t.summaryDateTime) DESC, MONTH(t.summaryDateTime) DESC
YEARとMonthの両方にDESCを使用して正しい順序を取得する必要があります。
私は好む
SELECT
MONTHNAME(t.summaryDateTime) as month, YEAR(t.summaryDateTime) as year
FROM
trading_summary t
GROUP BY EXTRACT(YEAR_MONTH FROM t.summaryDateTime) DESC";
これは古い質問ですが、DBレベルで月の名前が必要ない場合は、次のように動作するはずです。
SELECT EXTRACT(YEAR_MONTH FROM summaryDateTime) summary_year_month
FROM trading_summary
GROUP BY summary_year_month;
おそらく、これはパフォーマンスが優れていることがわかります。アプリケーションレイヤーでJSONオブジェクトを作成している場合は、結果を実行しながらフォーマット/順序付けを行うことができます。
N.B。MySQLのGROUP BY句にDESCを追加できることを知りませんでした。おそらくORDER BY句がありません。
SELECT EXTRACT(YEAR_MONTH FROM summaryDateTime) summary_year_month
FROM trading_summary
GROUP BY summary_year_month
ORDER BY summary_year_month DESC;
あなたはこのようなことをしなければなりません
SELECT onDay, id,
sum(pxLow)/count(*),sum(pxLow),count(`*`),
CONCAT(YEAR(onDay),"-",MONTH(onDay)) as sdate
FROM ... where stockParent_id =16120 group by sdate order by onDay
このようなEXTRACT関数を使用します
mysql> SELECT EXTRACT(YEAR FROM '2009-07-02');
-> 2009
あなたは月のみでグループ化しているので、YEAR()をグループに追加する必要があります
これもできます
SELECT SUM(amnt) `value`,DATE_FORMAT(dtrg,'%m-%y') AS label FROM rentpay GROUP BY YEAR(dtrg) DESC, MONTH(dtrg) DESC LIMIT 12
年と月で注文します。今年と今月から12か月に戻って注文したいとしましょう
SELECT YEAR(t.summaryDateTime) as yr, GROUP_CONCAT(MONTHNAME(t.summaryDateTime)) AS month
FROM trading_summary t GROUP BY yr
それでも、探している構造を正確に取得するには、外部スクリプトで処理する必要があります。
たとえば、PHPのexplodeを使用して月名のリストから配列を作成し、json_encode()を使用します