繁体   English   中英

GROUP BY 一个 CONCAT 和另一列 SQL

[英]GROUP BY a CONCAT and another column SQL

我是新来的,如有错误请见谅。 我在中学尝试了一道测试题,我对 SQL 不太擅长,所以我有点困惑。 任何帮助表示赞赏,非常感谢。

表候选人:

   ID FNAME LNAME
1  1  COCO  MELON
2  2  RED   SHANKS
3  3  OPTI  PRIME
4  4  BUGS  BUNNY

表投票:

   ID STATE
1  1  ALABAMA
2  1  ALABAMA
3  2  ALABAMA
4  3  TEXAS
5  4  TEXAS

预期的输出应该是这样的:

    STATE   VOTES
1   ALABAMA COCO MELON x 2, RED SHANKS x 1
2   TEXAS   OPTI PRIME x 1, BUGS BUNNY x 1

我使用了 CONCAT,并设法按名称进行分组。 但是,各州不会效仿。 它只是不想分组。 我错过了什么? 谢谢您的帮助。 这是我所做的代码。

SELECT v.state, CONCAT(fname,' ',lname,' x ',COUNT(v.state))
FROM candidates c
INNER JOIN votes v ON v.id = c.id
GROUP BY v.state, c.fname, c.lname;

您可以在JOIN表格之前对投票进行COUNT ,并使用GROUP_CONCAT将所有名称和计数连接在一起

SELECT v.state, GROUP_CONCAT(CONCAT(fname,' ',lname,' x ',v.count_) ORDER BY v.ID) FROM candidates c INNER JOIN (SELECT `ID`, `STATE`, COUNT(*) count_ FROM votes GROUP BY `ID`, `STATE`) v ON c.ID = v.ID GROUP BY v.state
状态 |  GROUP_CONCAT(CONCAT(fname,' ',lname,' x ',v.count_) ORDER BY v.ID)
 :-------- |  :------------------------------------------------ ----------------
阿拉巴马 | 可可甜瓜 x 2,红柄 x 1                                     
德州 |  OPTI PRIME x 1,BUGS 兔子 x 1                                     

db<> 在这里摆弄

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM