Home > Mobile >  It is possible in mysql query to dynamically sum row based on column with criteria?
It is possible in mysql query to dynamically sum row based on column with criteria?

Time:08-15

So, its my original table. The duration is in second.

Duration Status
30 0
30 0
31 1
30 1
31 1
31 0
31 1
30 0
30 0
30 0
31 0
30 1
30 1
30 0

and i want the result is something like this (if possible)

Status sum of duration
0 60
1 92
0 31
1 31
0 121
1 60
0 30

i want to sum the duration for each status (0 and 1), i have try some query like sum, group, or where modification... but i dont get the correct one.

I hope someone can help me. Thank you in advance : )

note : i use mysql phpmyadmin im sorry, i just edited the result that i desire. because there is slight mistake in my manual count

CodePudding user response:

Remember that an RDBMS table is a set.

What you're showing in your question looks like an ordered list, rather than a set.

Write some code that reads
duration, status, and writes
duration, status, session_id.

Now, with those seven distinct IDs appearing in a table, you're in a good position to use SUM(duration) in a GROUP BY session_id query.

CodePudding user response:

Have you try combining SUM with CASE to achieve this

https://learnsql.com/blog/case-when-with-sum/

Since you have not provided the table structure here is a generic example

SELECT 
  first_name,
  last_name,
  score,
  CASE
    WHEN score > 90 THEN 'Exceptional result'
    WHEN score > 70 THEN 'Great result'
    WHEN score > 50 THEN 'Average result'
    ELSE 'Poor result'
  END AS score_category
FROM test_result
ORDER BY score DESC;

The CASE conditions can be quite complex and could help you achieve what you need.

  • Related