각 행에 타임 스탬프가있는 테이블이 주어지면이 특정 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 EXTRACT(YEAR_MONTH FROM t.summaryDateTime) DESC";
답변
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
올바른 순서를 얻으려면 연도 및 월 모두에 DESC를 사용해야합니다.
답변
나는 이것이 오래된 질문이라는 것을 알고 있지만 DB 수준에서 월 이름이 필요하지 않으면 다음이 작동합니다.
SELECT EXTRACT(YEAR_MONTH FROM summaryDateTime) summary_year_month
FROM trading_summary
GROUP BY summary_year_month;
성능이 더 좋을 것입니다. 응용 프로그램 계층에서 JSON 개체를 빌드하는 경우 결과를 실행하면서 서식 지정 / 순서를 지정할 수 있습니다.
NB 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
답변
당신도 이것을합니다
SELECT SUM(amnt) `value`,DATE_FORMAT(dtrg,'%m-%y') AS label FROM rentpay GROUP BY YEAR(dtrg) DESC, MONTH(dtrg) DESC LIMIT 12
연도 및 월별로 주문합니다. 올해와 이번 달부터 12 개월까지 주문하고 싶다고 가정 해 보겠습니다.
