gpt4 book ai didi

mysql - 跨多个字段聚合

转载 作者:行者123 更新时间:2023-11-29 08:30:44 26 4
gpt4 key购买 nike

我以为我已经弄清楚了这一点,但它却让我无法理解。有一个 MySQL 数据库支持一个 Web 应用程序,该应用程序收集各种主题公园的用户调查。有一系列 30 个问题,有些是单选按钮式的多项选择,有些是复选框式的。响应全部存储在类似于以下的关系表中:

"id"|"q_id"| "a_id"|"u_id"                              |"p_id"| 
"1"| "1"| "1"|"8f699ecbd9f130df14c1e4e0a6383516"|"106397"|
"2"| "1"| "2"|"8f699ecbd9f130df14c1e4e0a6383516"|"106397"|
"3"| "2"| "1"|"8f699ecbd9f130df14c1e4e0a6383516"|"106397"|
"4"| "3"| "1"|"8f699ecbd9f130df14c1e4e0a6383516"|"106397"|
"7"| "3"| "3"|"8f699ecbd9f130df14c1e4e0a6383516"|"106397"|
"8"| "3"| "4"|"8f699ecbd9f130df14c1e4e0a6383516"|"106397"|
"9"| "1"| "2"|"348895be7b4affac001c9ba096d8c1d3"|"106397"|
"10"| "1"| "3"|"348895be7b4affac001c9ba096d8c1d3"|"106397"|
"11"| "3"| "2"|"348895be7b4affac001c9ba096d8c1d3"|"106397"|
"13"| "3"| "3"|"348895be7b4affac001c9ba096d8c1d3"|"106397"|
"1"| "1"| "3"|"8f699ecbd9f130df14c1e4e0a6383516"|"380486"|
"3"| "2"| "2"|"8f699ecbd9f130df14c1e4e0a6383516"|"380486"|
"4"| "3"| "2"|"8f699ecbd9f130df14c1e4e0a6383516"|"380486"|
"7"| "3"| "4"|"8f699ecbd9f130df14c1e4e0a6383516"|"380486"|
"8"| "3"| "4"|"8f699ecbd9f130df14c1e4e0a6383516"|"380486"|
"11"| "3"| "2"|"348895be7b4affac001c9ba096d8c1d3"|"380486"|
"13"| "3"| "3"|"348895be7b4affac001c9ba096d8c1d3"|"380486"|

q_id 是已回答的问题a_id 是选择的选项u_id 是选择该选项的用户p_id是他们回答问题的游乐园

因此,在复选框式问题的情况下,该表可能包含多个 u_id、q_id 和 p_id 相同的记录,但绝不会包含 u_id、q_id、p_id 和 a_id 相同的记录。

我需要做的是创建一个查询,该查询将统计给定游乐园的每个给定问题的总回答次数。在这种情况下,我需要的是:

  "p_id"|"count" 
"106397"|"5"
"380486"|"4"

...换句话说,我需要每个 p_id,以及 q_id 和 u_id 的唯一实例的数量。我认为这会起作用:

SELECT distinct p_id, count(concat(q_id,u_id)) from responses group by p_id

但这似乎仍然在计算 q_id 和 u_id 值相同但 a_id 值两次不同的两条记录,给我:

  "p_id"|"count" 
"106397"|"10"
"380486"| "7"

我可以对此查询执行什么操作才能使该聚合函数正常工作?

最佳答案

Bluefeet 的回答绝对是一种可行的方法。这是修改方法以使其发挥作用的方法:

SELECT p_id, count(distinct concat(q_id,':',u_id))
from responses
group by p_id;

这些是我所做的更改:

  1. 删除了select unique中的distinct。这(通常)对于group by来说是多余的。
  2. count() 更改为 count(distinct)。您想要计算该对的不同出现次数。
  3. 添加了分隔符。这样 (23, 4) 就不会与 (2, 34) 混淆。以防万一。

关于mysql - 跨多个字段聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16702527/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com