在我的表格中,我有一列存储调查的json表示形式。它具有下一种格式:
| ---------------------------------------------------------------------------------
| survey
| ------------------------------------------------------------------------------------
|[{"answers": ["1"], "question": "..."}, {"answers": ["1"], "question": "..."}, ...]
|-------------------------------------------------------------------------------------
|[{"answers": ["2"], "question": "..."}, {"answers": ["1"], "question": "..."}, ...]
---------------------------------------------------------------------------------------
问题包含问题的文本,答案包含用户对问题给出的字符串(答案)数组。每个记录中的问题顺序相同。
如何获取每个问题的答案统计信息。我的意思是,有多少用户在第一个问题等上选择1
选项。
UPD : 如果问题有1个答案,得到了可行的解决方案,在我的情况下这是合适的解决方案。感谢Barmar提供的有用(否)参考:
SELECT
JSON_ARRAYAGG(JSON_OBJECT('count', count, 'answer', answer)) as data,
question
FROM
(
SELECT
count(*) as count,
answer,
question
FROM
(
SELECT
JSON_UNQUOTE(JSON_EXTRACT(survey, CONCAT('$[', idx, '].answers[0]'))) as answer,
JSON_UNQUOTE(JSON_EXTRACT(survey, CONCAT('$[', idx, '].question'))) as question
FROM
user_profiles
JOIN
(
SELECT
0 AS idx
UNION
SELECT
1 AS idx
UNION
SELECT
2 AS idx
UNION
SELECT
3 AS idx
UNION
SELECT
4 AS idx
UNION
SELECT
5 AS idx
UNION
SELECT
6 AS idx
UNION
SELECT
7 AS idx
UNION
SELECT
8 AS idx
UNION
SELECT
9 AS idx
UNION
SELECT
10 AS idx
UNION
SELECT
11 AS idx
UNION
SELECT
12 AS idx
UNION
SELECT
13 AS idx
UNION
SELECT
14 AS idx
UNION
SELECT
15 AS idx
UNION
SELECT
16 AS idx
UNION
SELECT
17
)
AS indexes
WHERE
JSON_UNQUOTE(JSON_EXTRACT(survey, CONCAT('$[', idx, '].question'))) IS NOT NULL
)
as qa
GROUP BY
answer,
question
ORDER BY
question
)
as anwers
GROUP BY
question;
``