필자는 오랫동안 MySQL 쿼리를 작성해 왔지만 이것에 관해서는 완전히 초보자라고 느낍니다.이 쿼리를 단순화하는 방법을 찾지 못했습니다. 기본적으로 난 그냥 구글 차트에 연결되면 우리의 데이터베이스에서 수익의 쉼표로 구분 된 목록을 생성하려고 해요. 나는 "지난 31 일"을 위해 하나 만들어야 만합니다. 그래서 이것을 단순화하는 방법을 찾지 못하면 나는 다소 망가져 있습니다. 순서가 INT() (UNIX 타임 스탬프 형식) MySQL이 쿼리를 단순화합니까?
내 데이터베이스 열
- 시간 ...이다 10,2)
SELECT
CONCAT(
(SELECT SUM(price) FROM orders WHERE time < (UNIX_TIMESTAMP() - (6 * 86400)) AND time > (UNIX_TIMESTAMP() - (7 * 86400))),
',',
(SELECT SUM(price) FROM orders WHERE time < (UNIX_TIMESTAMP() - (5 * 86400)) AND time > (UNIX_TIMESTAMP() - (6 * 86400))),
',',
(SELECT SUM(price) FROM orders WHERE time < (UNIX_TIMESTAMP() - (4 * 86400)) AND time > (UNIX_TIMESTAMP() - (5 * 86400))),
',',
(SELECT SUM(price) FROM orders WHERE time < (UNIX_TIMESTAMP() - (3 * 86400)) AND time > (UNIX_TIMESTAMP() - (4 * 86400))),
',',
(SELECT SUM(price) FROM orders WHERE time < (UNIX_TIMESTAMP() - (2 * 86400)) AND time > (UNIX_TIMESTAMP() - (3 * 86400))),
',',
(SELECT SUM(price) FROM orders WHERE time < (UNIX_TIMESTAMP() - 86400) AND time > (UNIX_TIMESTAMP() - (2* 86400))),
',',
(SELECT SUM(price) FROM orders WHERE time > (UNIX_TIMESTAMP() - 86400))
) as chart_rev
FROM orders_basic
LIMIT 0,1
가능하면,이 같은 24 개 시간 단위로 필요.
언제나처럼, 어떤 도움을 많이 주시면 감사하겠습니다. 감사!
솔루션
참고 : 당신의 결과를주의 깊게 봐, 그들은 단지 잘못된 순서로,있을 수 있으므로, 귀하의 정렬을 반대합니다.
SELECT GROUP_CONCAT(total_sum) AS sum_list FROM
(
SELECT
FLOOR((UNIX_TIMESTAMP() - time)/86400) AS date,
SUM(price) AS total_sum
FROM
orders_basic
WHERE
is_testorder < 1
AND FROM_UNIXTIME(time) > DATE_SUB(NOW(), INTERVAL 1 WEEK)
GROUP BY
date
) AS s
먼저 ['DATE_ADD()'와'INTERVAL']을 통합하려고합니다. (http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date- 추가 할 수 있습니다. 그런 다음 달 범위와 그룹별로 [[GROUP_CONCAT()'] (http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat)을 시도해 보겠습니다. 날 번호. – mellamokb
당신이 시도한 것을 보여 주셔서 감사합니다. 그러나 우리가 스키마와 원하는 출력을 보여 주면 더 쉬울 것입니다. –
@Marcus Adams, 나는 스키마를 설명하고 원하는 출력이 무엇인지 말했습니다. 나는 당신을 위해 더 명확하게 그것을 포맷했습니다. 열은 2 개뿐입니다. 내가 원하는 것의 예는 다음과 같습니다. 1.01,3,2,4.23 – PolishHurricane