2014-09-25 106 views
0

我有2個不同的查詢,它們都返回類似於下面的結果。例如結合sql select查詢

SELECT value 
    , date_format(statdate, "%Y-%m-%d") AS testdate 
FROM stats 
WHERE name LIKE 'myname1' 
    AND date >= "2014-09-20" 
    and date < "2014-09-24" 
GROUP BY 2; 

SELECT value 
    , date_format(statdate, "%Y-%m-%d") AS testdate 
FROM stats 
WHERE name LIKE 'myname2' 
    AND date >= "2014-09-20" 
    and date < "2014-09-24" 
GROUP BY 2; 

信息來自相同的表,但它的一部分是一個不同的WHERE(與日期是它是在兩個相同的字段)。

兩者均返回信息,如..

value| testdate | 
+--------+-------+ 
| 60 | 2014-09-20| 
| 57 | 2014-09-21| 
| 56 | 2014-09-22| 
| 55 | 2014-09-23| 
| 59 | 2014-09-24| 

我想什麼做的,是兩套結果合併成一個(然後執行類似的兩個數字比一些數學),所以我希望喜歡的東西就結了......

val1 | val2| ratio (val1/val2) | testdate | 
+----+-------------------------|------------+ 
| 60 | 140 | 0.42    | 2014-09-20 | 
| 57 | 180 | 0.31    | 2014-09-21 | 
| 56 | 190 | 0.29    | 2014-09-22 | 
| 55 | 10 | 5.5    | 2014-09-23 | 
| 59 | 100 | 0.59    | 2014-09-24 | 

我猜我需要一個JOIN地方,但想不出它,以及如何使用該值對一些基本的數學在那裏?

回答

1

您應該使用「自加入」加入同一表的2個實例。像下面

SELECT s1.value, date_format(s1.statdate, "%Y-%m-%d") AS testdate 
s2.value, date_format(s2.statdate, "%Y-%m-%d") AS testdate2, 
(s1.value/s2.value) as ration 
FROM stats s1, stats s2 
WHERE s1.id = s2.id 
and s1.name LIKE 'myname1' AND s1.date >= "2014-09-20" and s1.date < "2014-09-24" 
and s2.name LIKE 'myname2' AND s2.date >= "2014-09-20" and s2.date < "2014-09-24" 
GROUP BY 2; 
+0

爲什麼降投票....什麼是錯上述查詢? – 2014-09-25 11:55:01

+0

這很接近並給出了正確的數據,但是我將如何計算兩個值的比率呢? – Ian 2014-09-25 13:56:32

1

我建議有條件聚集:

SELECT date_format(statdate, '%Y-%m-%d') AS testdate, 
     max(case when name = 'myname1' then value end) as val1, 
     max(case when name = 'myname2' then value end) as val2, 
     (max(case when name = 'myname1' then value end)/
     max(case when name = 'myname2' then value end) 
     ) as ratio, 
FROM stats 
WHERE name in ('myname1', 'myname2') AND date >= '2014-09-20' and date < '2014-09-24' 
GROUP BY date_format(statdate, '%Y-%m-%d'); 
+0

我認爲目前看起來不錯。是否有可能澄清最大/最小邏輯關於正在做什麼,僅僅是爲了能夠訪問該值? – Ian 2014-09-25 14:07:09

+0

這兩個答案都給出了正確的結果,所以我都贊成這兩個答案,但考慮到其他答案,就像感覺更直觀一樣。如果我能夠比較這種技術的優點,我很高興能夠轉換。 – Ian 2014-09-25 14:50:44

+0

@Ian。 。 。就個人而言,我認爲在聚合之前做一個額外的連接*不是更直觀,而是每個他/她自己。 – 2014-09-25 21:45:52