MYsql - Get average time between a start and stop time across many rows












0















I have the following SQL and PHP that doesnt seem to be giving me the right numbers. (VERY high numbers)



I have a lot of rows with a start time and an end timestamp.
Im looking to get the average time between those two times.



Ie: 2 hours, 3 minutes, 46 seconds.



This is what I have.



SELECT AVG(tmp.dd) AS timetook
FROM
( SELECT TIME_TO_SEC(TIMEDIFF(timeclosed, timeanswered)) AS dd
FROM logs
WHERE timeclosed > DATE_SUB(NOW(), INTERVAL 1 DAY)
) tmp;


Am I going about this the completely wrong way? Anything obviously wrong here?



while($row = $result->fetch_assoc()) {
$timetoclose = $row['timetook'];
$hours = floor($timetoclose / 3600);
$mins = floor($timetoclose / 60 % 60);
$secs = floor($timetoclose % 60);
$timetoclose = sprintf('%02d Hour(s), %02d Minute(s), %02d Second(s)', $hours, $mins, $secs);
}


Cheers
G










share|improve this question

























  • See: Why should I provide an MCVE for what seems to me to be a very simple SQL query?

    – Strawberry
    Jan 2 at 12:02











  • I see nothing obviously wrong in your query. Is the average of "2 hours" is THAT high? Over 24 hours, it doesnt look incorrect to me. Keep in my mind that with AVG, if you have a few rows with a high number, it increase everything. Maybe you should use MEDIAN instead, not available in MySQL but can mimick it

    – Thomas G
    Jan 2 at 12:32
















0















I have the following SQL and PHP that doesnt seem to be giving me the right numbers. (VERY high numbers)



I have a lot of rows with a start time and an end timestamp.
Im looking to get the average time between those two times.



Ie: 2 hours, 3 minutes, 46 seconds.



This is what I have.



SELECT AVG(tmp.dd) AS timetook
FROM
( SELECT TIME_TO_SEC(TIMEDIFF(timeclosed, timeanswered)) AS dd
FROM logs
WHERE timeclosed > DATE_SUB(NOW(), INTERVAL 1 DAY)
) tmp;


Am I going about this the completely wrong way? Anything obviously wrong here?



while($row = $result->fetch_assoc()) {
$timetoclose = $row['timetook'];
$hours = floor($timetoclose / 3600);
$mins = floor($timetoclose / 60 % 60);
$secs = floor($timetoclose % 60);
$timetoclose = sprintf('%02d Hour(s), %02d Minute(s), %02d Second(s)', $hours, $mins, $secs);
}


Cheers
G










share|improve this question

























  • See: Why should I provide an MCVE for what seems to me to be a very simple SQL query?

    – Strawberry
    Jan 2 at 12:02











  • I see nothing obviously wrong in your query. Is the average of "2 hours" is THAT high? Over 24 hours, it doesnt look incorrect to me. Keep in my mind that with AVG, if you have a few rows with a high number, it increase everything. Maybe you should use MEDIAN instead, not available in MySQL but can mimick it

    – Thomas G
    Jan 2 at 12:32














0












0








0








I have the following SQL and PHP that doesnt seem to be giving me the right numbers. (VERY high numbers)



I have a lot of rows with a start time and an end timestamp.
Im looking to get the average time between those two times.



Ie: 2 hours, 3 minutes, 46 seconds.



This is what I have.



SELECT AVG(tmp.dd) AS timetook
FROM
( SELECT TIME_TO_SEC(TIMEDIFF(timeclosed, timeanswered)) AS dd
FROM logs
WHERE timeclosed > DATE_SUB(NOW(), INTERVAL 1 DAY)
) tmp;


Am I going about this the completely wrong way? Anything obviously wrong here?



while($row = $result->fetch_assoc()) {
$timetoclose = $row['timetook'];
$hours = floor($timetoclose / 3600);
$mins = floor($timetoclose / 60 % 60);
$secs = floor($timetoclose % 60);
$timetoclose = sprintf('%02d Hour(s), %02d Minute(s), %02d Second(s)', $hours, $mins, $secs);
}


Cheers
G










share|improve this question
















I have the following SQL and PHP that doesnt seem to be giving me the right numbers. (VERY high numbers)



I have a lot of rows with a start time and an end timestamp.
Im looking to get the average time between those two times.



Ie: 2 hours, 3 minutes, 46 seconds.



This is what I have.



SELECT AVG(tmp.dd) AS timetook
FROM
( SELECT TIME_TO_SEC(TIMEDIFF(timeclosed, timeanswered)) AS dd
FROM logs
WHERE timeclosed > DATE_SUB(NOW(), INTERVAL 1 DAY)
) tmp;


Am I going about this the completely wrong way? Anything obviously wrong here?



while($row = $result->fetch_assoc()) {
$timetoclose = $row['timetook'];
$hours = floor($timetoclose / 3600);
$mins = floor($timetoclose / 60 % 60);
$secs = floor($timetoclose % 60);
$timetoclose = sprintf('%02d Hour(s), %02d Minute(s), %02d Second(s)', $hours, $mins, $secs);
}


Cheers
G







mysql average






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Jan 2 at 12:02









Strawberry

26.8k83250




26.8k83250










asked Jan 2 at 11:53









Graham SmartGraham Smart

115




115













  • See: Why should I provide an MCVE for what seems to me to be a very simple SQL query?

    – Strawberry
    Jan 2 at 12:02











  • I see nothing obviously wrong in your query. Is the average of "2 hours" is THAT high? Over 24 hours, it doesnt look incorrect to me. Keep in my mind that with AVG, if you have a few rows with a high number, it increase everything. Maybe you should use MEDIAN instead, not available in MySQL but can mimick it

    – Thomas G
    Jan 2 at 12:32



















  • See: Why should I provide an MCVE for what seems to me to be a very simple SQL query?

    – Strawberry
    Jan 2 at 12:02











  • I see nothing obviously wrong in your query. Is the average of "2 hours" is THAT high? Over 24 hours, it doesnt look incorrect to me. Keep in my mind that with AVG, if you have a few rows with a high number, it increase everything. Maybe you should use MEDIAN instead, not available in MySQL but can mimick it

    – Thomas G
    Jan 2 at 12:32

















See: Why should I provide an MCVE for what seems to me to be a very simple SQL query?

– Strawberry
Jan 2 at 12:02





See: Why should I provide an MCVE for what seems to me to be a very simple SQL query?

– Strawberry
Jan 2 at 12:02













I see nothing obviously wrong in your query. Is the average of "2 hours" is THAT high? Over 24 hours, it doesnt look incorrect to me. Keep in my mind that with AVG, if you have a few rows with a high number, it increase everything. Maybe you should use MEDIAN instead, not available in MySQL but can mimick it

– Thomas G
Jan 2 at 12:32





I see nothing obviously wrong in your query. Is the average of "2 hours" is THAT high? Over 24 hours, it doesnt look incorrect to me. Keep in my mind that with AVG, if you have a few rows with a high number, it increase everything. Maybe you should use MEDIAN instead, not available in MySQL but can mimick it

– Thomas G
Jan 2 at 12:32












1 Answer
1






active

oldest

votes


















0














SELECT SUM(TIMESTAMPDIFF(minute, start_time, end_time)) / COUNT(*) AS avg_minutes
FROM your_table


try this query.






share|improve this answer

























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54005886%2fmysql-get-average-time-between-a-start-and-stop-time-across-many-rows%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    SELECT SUM(TIMESTAMPDIFF(minute, start_time, end_time)) / COUNT(*) AS avg_minutes
    FROM your_table


    try this query.






    share|improve this answer






























      0














      SELECT SUM(TIMESTAMPDIFF(minute, start_time, end_time)) / COUNT(*) AS avg_minutes
      FROM your_table


      try this query.






      share|improve this answer




























        0












        0








        0







        SELECT SUM(TIMESTAMPDIFF(minute, start_time, end_time)) / COUNT(*) AS avg_minutes
        FROM your_table


        try this query.






        share|improve this answer















        SELECT SUM(TIMESTAMPDIFF(minute, start_time, end_time)) / COUNT(*) AS avg_minutes
        FROM your_table


        try this query.







        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Jan 2 at 13:23









        JochenJung

        5,708105398




        5,708105398










        answered Jan 2 at 12:19









        Mukitul IslamMukitul Islam

        11




        11
































            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54005886%2fmysql-get-average-time-between-a-start-and-stop-time-across-many-rows%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Can a sorcerer learn a 5th-level spell early by creating spell slots using the Font of Magic feature?

            Does disintegrating a polymorphed enemy still kill it after the 2018 errata?

            A Topological Invariant for $pi_3(U(n))$