Home > Enterprise >  How to write query for this given result?
How to write query for this given result?

Time:07-01

Table "question":

q_id s_id question
8 1
9 1
10 1

Table "result":

id q_id s_id answer
1 8 1 yes
2 9 1 no
3 10 1 yes
4 8 1 no
5 9 1 yes
6 10 1 yes

I want the result to look like this how can I do this can anyone help me or suggest what I can do ??

  • have to take s_id from user as input
question yes no
like coffee?? 1 1
like water?? 1 1
like tea?? 2 0

CodePudding user response:

In the future it would help if you make a reproducible example using something like https://dbfiddle.uk/.

If you want to pivot like this, you will need to use GROUP BY and some aggregation. I would include s_id and q_id in your result as well, just in case you would like more than one student's result, of if there are identical questions with different q_id. I commented them out in this example:

SELECT 
  -- question.s_id, 
  -- question.q_id,
  question.question, 
  SUM(CASE WHEN result.answer = 'yes' THEN 1 ELSE 0 END) AS yes,
  SUM(CASE WHEN result.answer = 'no' THEN 1 ELSE 0 END) AS no
FROM question 
JOIN result
ON  question.s_id = result.s_id
AND question.q_id = result.q_id
WHERE question.s_id = 1 -- your input
GROUP BY 
  -- question.s_id, 
  -- question.q_id,
  question.question

db<>fiddle here

  • Related