这是表及其值:
CREATE TABLE Weapon(id INT,
Name VARCHAR(80),
Style VARCHAR(80));
Insert into Weapon values (1, 'Seismic Wand', 'Magic');
Insert into Weapon values (2, 'Nox Bow', 'Ranged');
Insert into Weapon values (3, 'Drygore', 'Melee');
Insert into Weapon values (4, 'Chaotic Staff', 'Magic');
Insert into Weapon values (5, 'Staff of Darkness', 'Magic');
Insert into Weapon values (6, 'Tetsu Katana', 'Melee');
Run Code Online (Sandbox Code Playgroud)
这是我的查询尝试。
SELECT Name, Count(*) AS Style
FROM Weapon
GROUP BY Name
HAVING Count(*) >= ALL
(SELECT Count(*)
FROM Weapon
GROUP BY Name);
Run Code Online (Sandbox Code Playgroud)
它不显示模式,Style列的最重复值。

我如何使它显示模式?
更新:
为了回应@vkp 对多个Styles 可能是数据集模式的合理担忧,这里有一个更好的查询:
SELECT Style AS Mode, COUNT(*) AS Count
FROM Weapon
GROUP BY Style
HAVING COUNT(*) >= ALL (SELECT COUNT(*) FROM Weapon GROUP BY Style);
Run Code Online (Sandbox Code Playgroud)
这产生:
| 模式 | 数数 |
|---|---|
| 魔法 | 3 |
这将返回数据集的模式,并将处理多个Styles 是模式的情况,而无需对结果进行目视检查。
例如,在原始表的基础上构建,
INSERT INTO Weapon
VALUES (7, 'Rock', 'Melee');
Run Code Online (Sandbox Code Playgroud)
(增加“近战”的数量,以便与“魔法”并列)
如果我们运行新的模式查找查询,我们会得到以下结果:
| 模式 | 数数 |
|---|---|
| 魔法 | 3 |
| 近战 | 3 |
我发布的原始答案(保留在下面)将在表格顶部生成模式,并要求用户选择他们需要的值。在我看来,这个新解决方案效果更好。此外,我意识到最初我将“计数”列标记为“模式”,而实际上数据集的模式是样式的名称(魔术、近战等),而不是样式出现的次数。
原始答案:
对于 Style 列的模式,
SELECT Style, COUNT(*) AS Mode
FROM Weapon
GROUP BY Style
ORDER BY COUNT(*) DESC;`
Run Code Online (Sandbox Code Playgroud)
产生:
| 风格 | 模式 |
|---|---|
| 魔法 | 3 |
| 近战 | 2 |
| 远程 | 1 |
模式将位于表格顶部。
感谢http://www.xarg.org/2012/07/statistical-functions-in-mysql/
| 归档时间: |
|
| 查看次数: |
11418 次 |
| 最近记录: |