我有一份問卷答覆表。我希望能夠將我目前擁有的2個查詢合併到一個查詢中。我一直試圖做這個幾天,並且搜索了很多網站。Mysql子查詢平均7天和30天
這是我到目前爲止有:
select
responses.gname,
responses.client_id,
responses.pri_cou_last,
responses.olm_team,
responses.work,
responses.resDate,
(SELECT round (avg(responses.response),2) FROM responses WHERE responses.formID='2' AND responses.resDate<=curdate() AND responses.resDate>=DATE_SUB(NOW(), INTERVAL 30 DAY) AND responses.response>'0')
AS avg30,
(SELECT round(avg(responses.response),2) FROM responses WHERE responses.formID='2' AND responses.resDate<=curdate() AND responses.resDate>=DATE_SUB(NOW(), INTERVAL 7 DAY) AND responses.response>'0')
AS avg7
from responses
GROUP BY responses.gname,responses.client_id
ORDER BY responses.pri_cou_last;
兩個子查詢沒有做我想要什麼,很可能是因爲他們是錯的。他們給了我7天和30天的所有回覆的總平均值。
這裏是代碼,7天查詢,對於我的作品:
SELECT
responses.gname,
responses.olm_team,
responses.work,
round(avgresponses.response),2),
responses.pri_cou_last,
responses.client_id,
visits.client_id,
visits.bed,
visits.depdate_ymd
FROM
responses
LEFT JOIN
visits ON responses.client_id=visits.client_id
WHERE
responses.formID='2'
AND responses.resDate<=curdate()
AND responses.resDate>=DATE_SUB(NOW(), INTERVAL 7 DAY)
AND responses.response>'0'
AND visits.bed>'0'
AND visits.depdate_ymd='0000-00-00'
GROUP BY
responses.gname,
responses.client_id
ORDER BY
responses.pri_cou_last
預先感謝您!
感謝迄今的迴應。
是的,有一個formID列,它拼寫相同。
下面是代碼我現在有:
SELECT
r1.gname,
r1.client_id,
r1.pri_cou_last,
r1.olm_team,
r1.work,
r1.resDate,
round(AVG(CASE WHEN formID = '2' AND response > '0' AND resDate BETWEEN DATE_SUB(NOW(), INTERVAL 7 DAY) AND CURDATE() THEN response end),2) as a7,
round(AVG(CASE WHEN formID = '2' AND response > '0' AND resDate BETWEEN DATE_SUB(NOW(), INTERVAL 30 DAY) AND CURDATE() THEN response end),2) as a3,
visits.client_id,
visits.bed,
visits.depdate_ymd
FROM
responses as r1
LEFT JOIN visits on r1.client_id=visits.client_id
WHERE visits.bed>'0'
GROUP BY r1.client_id,r1.pri_cou_last
ORDER BY r1.pri_cou_last;
的問題是數據是不是我想要的。在某些行上有a3和a7返回NULL值。而且,沒有合適的行數。
通過客戶端查看上述查詢返回的數據後,我們發現該查詢中的數據是正確的。它提供了比原始查詢更多的數據,並且它們通過客戶端將數據輸入到程序中導致此查詢出現一些意外的響應。但他們是正確的...
我檢查了下面的1個答案,因爲使用CASE確實解決了問題。我永遠無法獲得相關查詢的工作。
再次感謝。
刪除從那裏的應用情況,..THEN – Mihai 2014-10-02 19:30:21