반응형
mysql의 날짜별 데이터에서 월별 행 수 가져오기
테이블이 두 개 있습니다.
table 1.a
id--entry_date-amount
============================
2---2016-04-14--$400
3---2016-04-14--$400
4----2017-07-14--$200
5---2017-07-14--$500
6---2017-05-14--$600
7----2017-06-18--$100
table 2.b
id--entry_date
===========================
2---2016-04-14--$230
3---2016-04-14--$230
4----2017-07-14--$567
5---2017-07-14--$600
6---2017-05-14--$560
7----2017-06-18--$90
8---2016-04-14--$100
두 개의 테이블에서 어떻게 제가 원하는 결과를 몽와이즈로 계산할 수 있을까요?
month_name--total(count form table a)--total(count form table b)--amount(table a)--amount(table b)
========================================================
April,16-----------2-------------------3---$800-$500
May,17-----------1-------------------1 --$600--$700
June,17-----------2-------------------2--$100--$800
July,17-----------2-------------------2---$700-$400
이것이 데모 데이터입니다.나는 두 개의 테이블의 데이터를 한 쿼리 월 단위로 보여주고 싶습니다.이거 어떻게 해요?
노력했습니다.
SELECT MONTHNAME(r.entry_date),r.a_total FROM(
SELECT
IFNULL((SELECT COUNT(tr.id) AS amount FROM a AS tr WHERE MONTH(tr.entry_date)=MONTH(t.entry_date)),0) AS a_total
,t.entry_date
FROM(SELECT tr.id,tr.entry_date
FROM a AS tr
WHERE DATE(tr.entry_date) BETWEEN '2017-07-01' AND '2018-06-30') t
GROUP BY MONTH(t.entry_date)) r
하지만 간단한 쿼리에는 58초가 걸립니다.간단한 쿼리로 어떻게 만들 수 있습니까?
각 표에서 개별적으로 카운트와 합계를 구한 다음,UNION
두 결과 집합을 하나의 결과 집합으로 결합합니다.이와 같은 것:
SELECT Month_name,
SUM(aCount) AS aCount,
SUM(bCount) AS bCount,
SUM(aAmount) AS aAmount,
SUM(bAmount) AS bAmount
FROM
(
SELECT
MONTHNAME(a.entry_date) AS Month_name,
COUNT(a.id) AS aCount,
0 AS bCount,
SUM(a.amount) AS aAmount,
0 AS bAmount
FROM a
GROUP BY MONTHNAME(a.entry_date)
UNION ALL
SELECT
MONTHNAME(b.entry_date) AS Month_name,
0 AS aCount,
COUNT(b.id) AS bCount,
0 AS aAmount,
SUM(b.amount) AS bAmount
FROM b
GROUP BY MONTHNAME(b.entry_date)
) AS t
GROUP BY Month_Name;
user9131497은 큰 그림에 적합한 디자인을 가지고 있습니다.하지만 저는 날짜 처리를 위해 다음과 같은 것을 제안합니다.
SELECT DATE_FORMAT(entry_date, "%M,%y") AS 'Month',
COUNT(*) AS 'aCount'
FROM a
GROUP BY LEFT(entry_date, 7) -- eg, "2017-03"
제 말이 무슨 뜻인지 한번 들어보세요.
이 작업은 1년 이상 사용할 수 있습니다.아니면 모든 연도의 1월 값을 합해야 했습니까?-- 그것이 귀사의 솔루션과 사용자 9131497의 기능입니다.내 것이 그들을 분리시켜줍니다.
언급URL : https://stackoverflow.com/questions/47960530/get-monthwise-row-count-from-datewise-data-in-mysql
반응형
'programing' 카테고리의 다른 글
데이터 프레임의 두 열을 명명된 벡터로 변환 (0) | 2023.09.11 |
---|---|
Angular App은 새 배포 후 캐시를 삭제해야 함 (0) | 2023.09.11 |
도커-영구 데이터 MySQL 구성 (0) | 2023.09.11 |
안드로이드에서 보기가 보이는지 확인하려면 어떻게 해야 합니까? (0) | 2023.09.06 |
ID에 점이 포함되어 있을 때 jquery로 ID별 html 노드를 선택하는 방법은? (0) | 2023.09.06 |