You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建视图按Poll分组统计各投票中歌曲的得票次数?

问题描述

数据库存储用户在多个投票活动(Poll)中投票的歌曲,部分歌曲可属于多个Poll。简化后的示例表如下:

+------+------------------------------------+
| POLL | SONG                               | 
+------+------------------------------------+
|  1   | ABBA - I HAVE A DREAM              |
|  1   | 10 CC - DREADLOCK HOLIDAY          |
|  1   | ABBA - I HAVE A DREAM              |
|  1   | ABBA - I HAVE A DREAM              |
|  1   | ANDREA BERG - WENN DU MICH WILLST  |
|  2   | QUEEN - WE WILL ROCK YOU           | 
|  2   | ABBA - I HAVE A DREAM              |
|  2   | QUEEN - WE WILL ROCK YOU           | 
|  2   | HELEN SHAPIRO - QUEEN FOR TONIGHT  |
|  3   | ABBA - I HAVE A DREAM              |
+------+------------------------------------+

现有SQL脚本创建的视图是跨所有Poll统计歌曲总得票数,未按Poll区分:

CREATE OR REPLACE VIEW `voteResults` AS
SELECT
  poll,
  song,
  COUNT(song) AS count
FROM votes
GROUP BY song
ORDER BY count DESC

需要实现按每个Poll分别统计其中歌曲的得票数,视图输出需如下:

+------+------------------------------------+-------+
| POLL | SONG                               | COUNT |
+------+------------------------------------+-------+
|  1   | ABBA - I HAVE A DREAM              |   3   |
|  1   | 10 CC - DREADLOCK HOLIDAY          |   1   |
|  1   | ANDREA BERG - WENN DU MICH WILLST  |   1   |
|  2   | QUEEN - WE WILL ROCK YOU           |   2   |
|  2   | ABBA - I HAVE A DREAM              |   1   |
|  2   | HELEN SHAPIRO - QUEEN FOR TONIGHT  |   1   |
|  3   | ABBA - I HAVE A DREAM              |   1   |
+------+------------------------------------+-------+
解决方案

核心问题是原SQL的GROUP BY仅按song分组,导致统计的是歌曲在所有Poll中的总票数,而非单个Poll内的票数。调整后的最优SQL如下:

CREATE OR REPLACE VIEW `voteResults` AS
SELECT
  poll,
  song,
  COUNT(*) AS count
FROM votes
GROUP BY poll, song
ORDER BY poll ASC, count DESC;

关键调整说明:

  • GROUP BY 子句:同时按poll和song分组,确保统计的是每首歌在单个Poll内的得票数,而非跨Poll的总和。
  • COUNT函数:用COUNT(*)替代COUNT(song)更简洁,只要song字段不为空,两者效果完全一致。
  • ORDER BY 子句:先按poll升序排列,保证同一Poll的结果集中展示;再按count降序排列,让每个Poll内得票更高的歌曲排在前面,完全匹配需求的输出格式。

内容的提问来源于stack exchange,提问作者NorthFred

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 08:14:57