반응형
MySQL Get Quarter(QTD) 1, 2, 3, 4 (금년도)
예를 들어, 올해(2017년)의 1, 2, 3, 4분기 실적에 대해 다음과 같이 질문할 수 있을까요?
╔═══════════╦════════╗════════╗════════╗
║ Q1 ║ Q2 ║ Q3 ║ Q4 ║
╠═══════════╬════════╣════════║════════║
║ € K54 ║ € K14 ║ € K0 ║ € K0 ║
╚═══════════╩════════╝════════╝════════╝
그리고 이것이 제가 만든 것입니다. (이 쿼리의 Q1은 최신이므로 Q2가 되면 Q2로 바뀝니다.그리고 위의 예시와 같이 다른 것을 보여주고 싶지 않습니다.)
╔══════════════╦
║ Q1 ║
╠══════════════╬
║ € K54 ║
╚══════════════╩
이게 제가 만든 질문입니다결과가 발견되지 않으면 자동으로 € K0으로 표시됩니다.
SELECT IF(SUM(totalExcl) IS NULL,0,
CONCAT('€ K',
FORMAT((SUM(totalExcl) / 1000),
0,'nl_NL'))) AS Q1
FROM
ex.ps_order o LEFT JOIN
ex.ps_oxo_quotation q ON o.id_order = q.idOrder LEFT JOIN
ex.ps_employee e ON q.idEmployee = e.id_employee
WHERE
QUARTER(q.date_add) = QUARTER(UTC_TIMESTAMP())
AND e.lastname IN ('Ver')
이전 분기 쿼리와 현재 분기 쿼리를 만드는 방법을 알고 있습니다.하지만 올해의 Q1, Q2, Q3, Q4와는 다릅니다.
저는 지금 이 결과에 거의 만족하고 있습니다.
╔═════════╦════════╗════════╗════════╗
║ Q1 ║ Q2 ║ Q3 ║ Q4 ║
╠═════════╬════════╣════════║════════║
║€96086,03║ € 0,00 ║ € 0,00 ║ € 0,00 ║
╚═════════╩════════╝════════╝════════╝
이 질문으로 (벤조 모르데노 덕분에)
SELECT
CONCAT('€ ',FORMAT(+ CAST(SUM(CASE WHEN QUARTER(q.date_add) = 1 THEN totalExcl ELSE 0 END) AS CHAR(100)), 2, 'nl_NL')) as Q1,
CONCAT('€ ',FORMAT(+ CAST(SUM(CASE WHEN QUARTER(q.date_add) = 2 THEN totalExcl ELSE 0 END) AS CHAR(100)), 2, 'nl_NL')) as Q2,
CONCAT('€ ',FORMAT(+ CAST(SUM(CASE WHEN QUARTER(q.date_add) = 3 THEN totalExcl ELSE 0 END) AS CHAR(100)), 2, 'nl_NL')) as Q3,
CONCAT('€ ',FORMAT(+ CAST(SUM(CASE WHEN QUARTER(q.date_add) = 4 THEN totalExcl ELSE 0 END) as CHAR(100)), 2, 'nl_NL')) as Q4
FROM
포맷하려면 다음 명령을 사용합니다.
SELECT
CONCAT('€ K',FORMAT(+ CAST(SUM(CASE WHEN QUARTER(q.date_add) = 1 THEN totalexcl ELSE 0 END)/1000 AS CHAR(100)), 0, 'nl_NL')) as Q1,
CONCAT('€ K',FORMAT(+ CAST(SUM(CASE WHEN QUARTER(q.date_add) = 2 THEN totalexcl ELSE 0 END)/1000 AS CHAR(100)), 0, 'nl_NL')) as Q2,
CONCAT('€ K',FORMAT(+ CAST(SUM(CASE WHEN QUARTER(q.date_add) = 3 THEN totalexcl ELSE 0 END)/1000 AS CHAR(100)), 0, 'nl_NL')) as Q3,
CONCAT('€ K',FORMAT(+ CAST(SUM(CASE WHEN QUARTER(q.date_add) = 4 THEN totalexcl ELSE 0 END)/1000 AS CHAR(100)), 0, 'nl_NL')) as Q4
FROM
결과:
╔═════════╦════════╗════════╗════════╗
║ Q1 ║ Q2 ║ Q3 ║ Q4 ║
╠═════════╬════════╣════════║════════║
║ € K96 ║ € 0 ║ € 0 ║ € 0 ║
╚═════════╩════════╝════════╝════════╝
다음과 같은 경우를 사용할 수 있습니다.
SELECT
'€ K' + CAST(SUM(CASE WHEN QUARTER(q.date_add)= 1 THEN totalexcl ELSE 0 END) AS VARCHAR(100)) as Q1,
'€ K' + CAST(SUM(CASE WHEN QUARTER(q.date_add) = 2 THEN totalexcl ELSE 0 END) AS VARCHAR(100)) as Q2,
'€ K' + CAST(SUM(CASE WHEN QUARTER(q.date_add)= 3 THEN totalexcl ELSE 0 END) AS VARCHAR(100)) as Q3,
'€ K' + CAST(SUM(CASE WHEN QUARTER(q.date_add)= 4 THEN totalexcl ELSE 0 END) as VARCHAR(100)) as Q4
FROM
ex.ps_order o LEFT JOIN
ex.ps_oxo_quotation q ON o.id_order = q.idOrder LEFT JOIN
ex.ps_employee e ON q.idEmployee = e.id_employee
WHERE e.lastname IN ('Ver')
언급URL : https://stackoverflow.com/questions/42781064/mysql-get-quarter-qtd-1-2-3-4-for-current-year
반응형
'IT' 카테고리의 다른 글
JavaScript에서 이름(알파벳 순으로 배열 정렬) (0) | 2023.01.21 |
---|---|
UTC Epoch를 로컬 날짜로 변환 (0) | 2023.01.21 |
Windows에서 MySQL 또는 MariaDB 서버를 실행하기 위한 최소 파일 - (Portable MySQL/MariaDB) (0) | 2023.01.21 |
PHP의 정수 인덱스를 사용하여 연결 배열 액세스 (0) | 2023.01.21 |
Maria를 사용한 스프링 부트에서의 다중 데이터베이스DB (0) | 2023.01.21 |