0
表sca_ticket_thread存儲狀態更改日期。我試圖計算兩個狀態之間的平均時間差。 「已創建」列存儲狀態更改的日期,「正文」列存儲狀態更改。計算同一張表上的行之間的平均時間差
SELECT AVG(DateDiff((SELECT created FROM
(SELECT created
FROM sca_ticket_thread
WHERE body = 'AchangetoB'
OR body = 'BchangetoC'
GROUP BY ticket_id
HAVING count(*) > 1)
as subquery),
(SELECT created
FROM sca_ticket_thread
WHERE body = 'BchangetoC'
ORDER BY ticket_id)))
FROM sca_ticket_thread
我收到的錯誤是:#1242 - 子查詢返回多個1行
我(在概念上,一點點)瞭解到,子查詢不能返回超過1行。我已經考慮加入一張表作爲一種可能的解決方案,但我認爲這不是正確的道路。
最後,我想生成從A到B的平均狀態的變化,B到C到d等
ID | STATUS | DATE
--------------------------
1 | Status A | 02/01/2015
1 | Status A | 02/02/2015
2 | Status B | 02/03/2015
運行的兩個子查詢,看看他們返回的內容。我無法回想一下子查詢可以返回多少行的限制。例如:'SELECT * FROM X WHERE x_id IN(SELECT x_id FROM X where x_value LIKE'foo%');'完全有效,子查詢可以返回多行。有些選項可以實現你想要的功能,包括:LIMIT,GROUP,MAX,MIN等等。 – nevets1219
第一個select語句返回24行,第二個是17.這是問題嗎? – Duke
是的。 DateDiff只需要兩個參數。您需要過濾掉其他行以獲得您想要的。此外,您應該確保多個'AchangetoB'和'BchangetoC'是有效的,如果不是,您可能會收緊架構以防止出現這種情況。 – nevets1219