您好,登錄后才能下訂單哦!
這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)怎么在MySQL數(shù)據(jù)庫(kù)中實(shí)現(xiàn)時(shí)間查詢數(shù)據(jù),文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
一個(gè)統(tǒng)計(jì)接口,前端需要返回兩個(gè)數(shù)組,一個(gè)是0-23的小時(shí)計(jì)數(shù),一個(gè)是各小時(shí)對(duì)應(yīng)的統(tǒng)計(jì)數(shù)。
思路 直接使用group by查詢要統(tǒng)計(jì)的表,當(dāng)某個(gè)小時(shí)統(tǒng)計(jì)數(shù)為0時(shí),會(huì)沒(méi)有該小時(shí)分組。思考了一下,需要建立輔助表,只有一列小時(shí),再插入0-23共24個(gè)小時(shí)
CREATE TABLE hours_list ( hour int NOT NULL PRIMARY KEY )
先查小時(shí)表,再做連接需要查的表,即可將沒(méi)有統(tǒng)計(jì)數(shù)的小時(shí)填充上0。這里由于需要查多個(gè)表中,create_time在每個(gè)小時(shí)區(qū)間內(nèi)、且SOURCE_ID等于查詢條件的統(tǒng)計(jì)之和,所以UNION ALL了多張表
SELECT t.HOUR, sum(t.HOUR_COUNT) hourCount FROM (SELECT hs. HOUR AS HOUR, COUNT(cs.RECORD_ID) AS HOUR_COUNT FROM cbc_hours_list hs LEFT JOIN cbc_source_0002 cs ON HOUR (cs.create_time) = hs. HOUR AND cs.create_time > #{startTime} AND cs.create_time <= #{endTime} <#if sourceId?exists && sourceId !=''> AND SOURCE_ID = #{sourceId} </#if> GROUP BY hs. HOUR UNION ALL SELECT hs.HOUR AS HOUR, COUNT(cs.RECORD_ID) AS HOUR_COUNT FROM cbc_hours_list hs LEFT JOIN cbc_source_hs cs ON HOUR (cs.create_time) = hs. HOUR AND cs.create_time > #{startTime} AND cs.create_time <= #{endTime} <#if sourceId?exists && sourceId !=''> AND SOURCE_ID = #{sourceId} </#if> GROUP BY hs. HOUR UNION ALL SELECT hs.HOUR AS HOUR, COUNT(cs.RECORD_ID) AS HOUR_COUNT FROM cbc_hours_list hs LEFT JOIN cbc_source_kfyj cs ON HOUR (cs.create_time) = hs. HOUR AND cs.create_time > #{startTime} AND cs.create_time <= #{endTime} <#if sourceId?exists && sourceId !=''> AND SOURCE_ID = #{sourceId} </#if> GROUP BY hs. HOUR UNION ALL SELECT hs.HOUR AS HOUR, COUNT(cs.RECORD_ID) AS HOUR_COUNT FROM cbc_hours_list hs LEFT JOIN cbc_source_his_0002 cs ON HOUR (cs.create_time) = hs. HOUR AND cs.create_time > #{startTime} AND cs.create_time <= #{endTime} <#if sourceId?exists && sourceId !=''> AND SOURCE_ID = #{sourceId} </#if> GROUP BY hs. HOUR UNION ALL SELECT hs.HOUR AS HOUR, COUNT(cs.RECORD_ID) AS HOUR_COUNT FROM cbc_hours_list hs LEFT JOIN cbc_source_his_hs cs ON HOUR (cs.create_time) = hs. HOUR AND cs.create_time > #{startTime} AND cs.create_time <= #{endTime} <#if sourceId?exists && sourceId !=''> AND SOURCE_ID = #{sourceId} </#if> GROUP BY hs. HOUR UNION ALL SELECT hs.HOUR AS HOUR, COUNT(cs.RECORD_ID) AS HOUR_COUNT FROM cbc_hours_list hs LEFT JOIN cbc_source_his_kfyj cs ON HOUR (cs.create_time) = hs. HOUR AND cs.create_time > #{startTime} AND cs.create_time <= #{endTime} <#if sourceId?exists && sourceId !=''> AND SOURCE_ID = #{sourceId} </#if> GROUP BY hs. HOUR) t GROUP BY t.hour
統(tǒng)計(jì)數(shù)為0的小時(shí)也可以查出來(lái)了。
上述就是小編為大家分享的怎么在MySQL數(shù)據(jù)庫(kù)中實(shí)現(xiàn)時(shí)間查詢數(shù)據(jù)了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。