【问题标题】:Select number of answers for each question options by respondent group按受访者组选择每个问题选项的答案数量
【发布时间】:2023-03-04 05:33:02
【问题描述】:

让我们使用具有以下结构的 PostgreSQL 数据库:

(所有关系从上到下都是OneToMany

对于具有给定 campaign_id 的“Brandlift”,我们如何检索:

对于每个问题answers*的数量(按brandrespondent.segment

*即具有匹配 品牌 ID

anwer_content 行的计数

这是给定dump的所需输出示例

基本上,品牌只是一个问题的可能答案/选择选项

您可以将 Brandlift 视为多项选择 q,每个问题都有相同的选择选项

【问题讨论】:

  • 请以可用的格式提供样本数据和所需的输出

标签: sql postgresql join doctrine-orm doctrine


【解决方案1】:

我使用了你的最新数据,这里是查询。

SELECT
    BQ.id as question_id,
    BR.segment_id,
    BB.name AS Brand_Name,
    COUNT(BAC.brand_id) AS Answer_Count
FROM
    PUBLIC.Brandlift B
    LEFT JOIN brandlift_question BQ ON B.campaign_id = BQ.campaign_id
    LEFT JOIN brandlift_respondent BR ON B.campaign_id = br.campaign_id
    LEFT JOIN brandlift_segment BS ON BR.segment_id = BS.id
    LEFT JOIN brandlift_answer BA ON BQ.id = BA.question_id AND BR.id = BA.respondent_id
    LEFT JOIN brandlift_brand BB ON B.campaign_id = BB.campaign_id
    LEFT JOIN brandlift_answer_content BAC ON BA.id = BAC.answer_id AND BB.id = BAC.brand_id
WHERE
    B.campaign_id = '8d8c79ce-188c-4f5e-bd72-edb854faf34c'
GROUP BY
    BQ.id,
    BB.name,
    BR.segment_id,
    BS.name

你的结果是

【讨论】:

  • 非常有用,谢谢!但我仍在为最后一部分而苦苦挣扎,我真的不知道如何检索正确数量的答案。实际上,此查询返回的答案比问题的答案多。实际上,对于“Count_Answer”列,我需要获取brand_id 与行品牌匹配的answer_content 数量。所以我想我需要一个额外的输出列来将 Brandlift_Answer_Content 加入到查询中。如果有帮助,这里是数据库的转储:wetransfer.com/downloads/…
  • 在 Answer 表中使用由“question_id”和“respondent_id”组成的组合键是个好主意吗?这样我就可以从“answer_content”直接访问“question_id”,并且通过“受访者”强制“问题”只有1个“答案”。帮助我一次解决 2 个问题
  • 我得到了你的数据,现在可以测试我的查询了。你能用你的数据给我你想要的输出吗?这将有助于我仔细检查。对于你的第二个问题,不需要这样做,如果你想成为一个好的数据库架构,你必须避免冗余列。由于您已经创建了 FK 来约束答案、问题和受访者之间的关系,因此这里不需要更多步骤。
  • 这是一个新的转储:wetransfer.com/downloads/… 我刚刚将“brandlift_respondent”的“segment”布尔列更改为一个新表,因此“brandlift_segment”有许多“受访者”。这是给定这个新转储的所需输出:i.stack.imgur.com/vrhdh.png
  • @Mohs 抱歉我昨天去购物了,我已经更新了查询
猜你喜欢
  • 2021-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-07
  • 1970-01-01
  • 1970-01-01
  • 2021-04-21
相关资源
最近更新 更多