這裏是我運行來分析MySQL數據庫服務器日誌代碼:相結合,並與同列合併對不同的MySQL表中的數據爲唯一行和運行的查詢到它
SELECT YEAR(datetime), MONTH(datetime), MIN(DATE(datetime)), MAX(DATE(datetime)), COUNT(DISTINCT (ip)), COUNT(ip), (COUNT(ip)/COUNT(DISTINCT (ip))) AS Ratio
FROM `server_log_1`
WHERE `state` LIKE 'action'
AND `user_id` LIKE '9'
GROUP BY MONTH(datetime)
UNION
SELECT YEAR(datetime), MONTH(datetime), MIN(DATE(datetime)), MAX(DATE(datetime)), COUNT(DISTINCT (ip)), COUNT(ip), (COUNT(ip)/COUNT(DISTINCT (ip))) AS Ratio
FROM `server_log_2`
WHERE `state` LIKE 'action'
AND `user_id` LIKE '9'
GROUP BY MONTH(datetime)
UNION
SELECT YEAR(datetime), MONTH(datetime), MIN(DATE(datetime)), MAX(DATE(datetime)), COUNT(DISTINCT (ip)), COUNT(ip), (COUNT(ip)/COUNT(DISTINCT (ip))) AS Ratio
FROM `server_log_3`
WHERE `state` LIKE 'action'
AND `user_id` LIKE '9'
GROUP BY MONTH(datetime)
這給我結果:
YEAR(datetime) MONTH(datetime) MIN(DATE(datetime)) MAX(DATE(datetime)) COUNT(DISTINCT (ip)) COUNT(ip) Ratio
2015 12 2015-12-14 2015-12-30 16 20 1.2500
2016 1 2016-01-05 2016-01-27 15 20 1.3333
2016 2 2016-02-02 2016-02-29 27 36 1.3333
2016 3 2016-03-04 2016-03-29 24 32 1.3333
2016 4 2016-04-01 2016-04-08 5 8 1.6000
2016 4 2016-04-09 2016-04-29 19 27 1.4211
2016 5 2016-05-02 2016-05-28 21 31 1.4762
2016 6 2016-06-01 2016-06-30 28 34 1.2143
2016 7 2016-07-01 2016-07-20 14 16 1.1429
2016 7 2016-07-21 2016-07-21 1 1 1.0000
這些是每個然而時看到一個月被分成2個不同的數據庫中,(如2016-4和2016-7)這導致該月要產生2個不同的行數據庫精確的結果。
我希望這些行被生成爲單行,其中包含相應月份的值的總和。 (每月只有一行)
另外,如果可能,簡化查詢。
2016-12年後我會遇到麻煩,按月分組會合並2015-12和2016-12的數據。我怎樣才能避免這個問題呢?
您能寫出正確的SQL語句嗎?
只是分享你想要的結果..更多細節.. image如果posiible –