2016-11-02 3 views
0

Я нашел много не совсем ответов на этот вопрос, но я ничего не могу основывать мои довольно ограниченные SQL навыки на ...Как подсчитать записи в таблице тузд сгруппированных по времени

У меня нет газовый счетчик, который дает импульс на каждый см3 используемого газа - время, когда импульсы происходят, получается с помощью pi и хранится в mysql db. Я пытаюсь отобразить db. Чтобы рассчитать данные, я хочу суммировать, сколько импульсов принимается каждый n период времени. Где n может составлять 5 минут для графика, охватывающего день или n, может составлять до 24 часов для графика, охватывающего год.

Данные находятся в таблице, которая имеет два столбца, первичный ключ/автоматический ввод, называемый «pulse_ref» и «pulse_time», который хранит временную метку unix того времени, когда был получен импульс.

Может ли кто-нибудь предложить запрос sql для подсчета количества импульсов, сгруппированных, скажем, через 5 минут?

Создать таблицу:

CREATE TABLE `gas_pulse` (
    `pulse_ref` int(11) NOT NULL AUTO_INCREMENT, 
    `pulse_time` int(11) DEFAULT NULL, 
    PRIMARY KEY (`pulse_ref`)); 

занесения некоторые данные:

INSERT INTO `gas_pulse` VALUES (1,1477978978),(2,1477978984),(3,1477978990),(4,1477978993),(5,1477979016),(6,1477979063),(7,1477979111),(8,1477979147),(9,1477979173),(10,1477979195),(11,1477979214),(12,1477979232),(13,1477979249),(14,1477979267),(15,1477979285),(16,1477979302),(17,1477979320),(18,1477979337),(19,1477979355),(20,1477979372),(21,1477979390),(22,1477979408),(23,1477979425),(24,1477979443),(25,1477979461),(26,1477979479),(27,1477979497),(28,1477979515),(29,1477979533),(30,1477979551),(31,1477979568),(32,1477979586),(33,1477980142),(34,1477980166),(35,1477981433),(36,1477981474),(37,1477981526),(38,1477981569),(39,1477981602),(40,1477981641),(41,1477981682),(42,1477981725),(43,1477981770),(44,1477981816),(45,1477981865),(46,1477981915),(47,1477981966),(48,1477982017),(49,1477982070),(50,1477982124),(51,1477982178),(52,1477982233),(53,1477988261),(54,1477988907),(55,1478001784),(56,1478001807),(57,1478002385),(58,1478002408),(59,1478002458),(60,1478002703),(61,1478002734),(62,1478002784),(63,1478002831),(64,1478002863),(65,1478002888),(66,1478002909),(67,1478002928),(68,1478002946),(69,1478002964),(70,1478002982),(71,1478003000),(72,1478003018),(73,1478003036),(74,1478003054),(75,1478003072),(76,1478003090),(77,1478003108),(78,1478003126),(79,1478003145),(80,1478003163),(81,1478003181),(82,1478003199),(83,1478003217),(84,1478003235),(85,1478003254),(86,1478003272),(87,1478003290),(88,1478003309),(89,1478003327),(90,1478003346),(91,1478003366),(92,1478003383),(93,1478003401),(94,1478003420),(95,1478003438),(96,1478003457),(97,1478003476),(98,1478003495),(99,1478003514),(100,1478003533),(101,1478003552),(102,1478003572),(103,1478003592),(104,1478003611),(105,1478003632),(106,1478003652),(107,1478003672),(108,1478003693),(109,1478003714),(110,1478003735),(111,1478003756),(112,1478003778),(113,1478003799),(114,1478003821),(115,1478003844),(116,1478003866),(117,1478003889),(118,1478003912),(119,1478003936),(120,1478003960),(121,1478003984),(122,1478004008),(123,1478004033),(124,1478004058),(125,1478004084),(126,1478004109),(127,1478004135),(128,1478004161),(129,1478004187),(130,1478004214),(131,1478004241),(132,1478004269),(133,1478004296),(134,1478004324),(135,1478004353),(136,1478004381),(137,1478004410),(138,1478004439),(139,1478004469),(140,1478004498),(141,1478004528),(142,1478004558),(143,1478004589),(144,1478004619),(145,1478004651),(146,1478004682),(147,1478004714),(148,1478004746),(149,1478004778),(150,1478004811),(151,1478004844),(152,1478004877),(153,1478004911),(154,1478004945),(155,1478004979),(156,1478005014),(157,1478005049),(158,1478005084),(159,1478005120),(160,1478005156),(161,1478005193),(162,1478005231),(163,1478005268),(164,1478005306),(165,1478005344),(166,1478005383),(167,1478005422),(168,1478005461),(169,1478005501),(170,1478005541),(171,1478005582),(172,1478005622),(173,1478005663),(174,1478005704),(175,1478005746),(176,1478005788),(177,1478005831),(178,1478005873),(179,1478005917),(180,1478005960),(181,1478006004),(182,1478006049),(183,1478006094),(184,1478006139),(185,1478006186),(186,1478006231),(187,1478006277),(188,1478010694),(189,1478010747),(190,1478010799),(191,1478010835),(192,1478010862),(193,1478010884),(194,1478010904),(195,1478010924),(196,1478010942),(197,1478010961),(198,1478010980),(199,1478010999),(200,1478011018),(201,1478011037),(202,1478011056),(203,1478011075),(204,1478011094),(205,1478011113),(206,1478011132),(207,1478011151),(208,1478011170),(209,1478011189),(210,1478011208),(211,1478011227),(212,1478011246),(213,1478011265),(214,1478011285),(215,1478011304),(216,1478011324),(217,1478011344),(218,1478011363),(219,1478011383),(220,1478011403),(221,1478011423),(222,1478011443),(223,1478011464),(224,1478011485),(225,1478011506),(226,1478011528),(227,1478011549),(228,1478011571),(229,1478011593),(230,1478011616),(231,1478011638),(232,1478011662),(233,1478011685),(234,1478011708),(235,1478011732),(236,1478011757),(237,1478011782),(238,1478011807),(239,1478011832),(240,1478011858),(241,1478011885),(242,1478011912),(243,1478011939),(244,1478011967),(245,1478011996),(246,1478012025),(247,1478012054),(248,1478012086),(249,1478012115),(250,1478012146),(251,1478012178),(252,1478012210),(253,1478012244),(254,1478012277),(255,1478),(256,1478),(257,1478),(258,1478012419),(259,1478012456),(260,1478012494),(261,1478012531),(262,1478012570),(263,1478012609),(264,1478012649),(265,1478012689),(266,1478012730),(267,1478012771),(268,1478012813),(269,1478012855),(270,1478012898),(271,1478012941),(272,1478012984),(273,1478013028),(274,1478013072),(275,1478013117),(276,1478013163),(277,1478013209),(278,1478013255),(279,1478013302),(280,1478013350),(281,1478013399),(282,1478013449),(283,1478013500),(284,1478013551),(285,1478013604),(286,1478013658),(287,1478013714),(288,1478013771),(289,1478013830),(290,1478013891),(291,1478013954),(292,1478014019),(293,1478014086),(294,1478014156),(295,1478014228),(296,1478014301),(297,1478014373),(298,1478014446),(299,1478014518),(300,1478014591),(301,1478014664),(302,1478014736),(303,1478014809),(304,1478014882),(305,1478015377),(306,1478015422),(307,1478015480),(308,1478015543),(309,1478015608),(310,1478015676),(311,1478015740),(312,1478015803),(313,1478015864),(314,1478015921),(315,1478015977),(316,1478016030),(317,1478016081),(318,1478016129),(319,1478016176); 
+0

См http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to- me-to-be-a-very-simple-sql-query – Strawberry

+0

@Strawberry OP внес изменения в вопрос, чтобы сделать его немного более понятным с некоторыми наборами данных образца. Вопрос кажется мне вполне справедливым. Но это не так еще не обратил внимания. –

+0

@kiranmuralee да, op выполнил 2 из минимум 3 задач, необходимых для того, чтобы сделать этот вопрос заслуживающим внимания, поэтому шаг (или два) в правильном направлении – Strawberry

ответ

0

Я полагаю, что вам нужно, чтобы получить количество импульсов в минуту н-(в вашем случае 5 минут) промежутки времени. Для достижения этой цели, пожалуйста, попробуйте следующий запрос

SELECT 
    COUNT(*) AS gas_pulse_count, 
    FROM_UNIXTIME(pulse_time - MOD(pulse_time, 5 * 60)) from_time, 
    FROM_UNIXTIME((pulse_time - MOD(pulse_time, 5 * 60)) + 5 * 60) to_time 
FROM 
    gas_pulse 
GROUP BY from_time 
+0

Это кажется довольно близким к тому, что я хочу - есть ли способ заставить его сообщать о количестве нулей, а не просто не возвращать запись за этот период времени? – Fraser73

+0

@ Fraser73 значения from_time и to_time зависят от данных pulse_time, поэтому по вышеуказанному запросу мы не можем производить отсчеты для нулей в течение других периодов времени. Но вы можете получить это вручную, где вы нарисуете свой график, построив нулевое значение, где нет данные. –

Смежные вопросы