我有一张这样的桌子.

+  day +  person + amount +
+------+---------+--------+
+    1 +    John +      4 +
+------+---------+--------+
+    1 +     Sam +      6 +
+------+---------+--------+
+    2 +    John +      3 +
+------+---------+--------+
+    3 +    John +      3 +
+------+---------+--------+
+    3 +     Sam +      5 +
+------+---------+--------+
+    4 +    John +      3 +
+------+---------+--------+

我如何才能获得按人员分组的条目数量大于3(或其他)的百分比? 我希望我的yields 是:约翰25%,萨姆100%. 当条款是"金额大于5"时,我会 Select :约翰0%,山姆50%. 当桌子变大时,最大限度地减少超载将是很好的.

推荐答案

AVG()聚合函数与条件聚合一起使用:

SELECT person,
       100 * AVG(amount > ?) percent
FROM tablename
GROUP BY person;

See the demo.

Mysql相关问答推荐

过程/别名是有点长的MySQL命令的一部分吗?

MySQL InnoDB:可以在没有回滚损失的情况下从运行的查询中进行大型插入吗

一次又一次地删除事件行

SQL不断返回查询失败,并且不知道从这里到哪里go

过滤值为0时如何在MySQL查询中设置条件?

MySQL函数 - 如何对select查询应用多个条件

Mysql如何分行分词

完全匹配 IN 子句中的所有值

如何同时从同一个表中 Select 从 SQL 表中删除行

将每组的总和除以总数

查询以查找可用时隙

如何在 MySQL 中搜索多个列?

docker-entrypoint-initdb 中的 MySQL 脚本未执行

将 Django DB 从 SQLite 迁移到 MySQL 的最佳方法是什么?

PHP 判断 NULL

在 MySQL Workbench EER 图中的多个列上创建唯一约束

什么是全文索引,我应该什么时候使用它?

我可以在 PHP 中使用 PDO 创建数据库吗?

带有 LIKE 运算符的 Select 语句中的 MySQL case

匹配 IN 子句中的所有值