mysql - 如何计算已执行的 SQL 查询的不同结果?

标签 mysql sql oracle distinct

    select application from l3_usage 
where function in ('dbms', 'web', 'app') 
group by application, function 
order by application 

enter image description here

这是我执行上述查询时的结果图像。

我现在想计算应用程序出现的次数。例如: 预算 : 3 企业社会责任:3 飞行管理系统:3 设施 : 1 库存:3

等...

我试过了

   select application, count(application) from l3_usage 
where function in ('dbms', 'web', 'app') 
group by application 
order by application 

但我得到的随机计数与我正在寻找的计数无关。

有人能帮忙吗?谢谢!

编辑:::::

我这样做的最终目的是只获取计数值小于 3 的应用程序。

在这种情况下,应该只返回“Facilities”和“SCM”。

最佳答案

试试这个查询:

SELECT x.application, COUNT(*) As Frequency
FROM
(
    SELECT application
    FROM l3_usage
    WHERE function IN ('dbms', 'web', 'app') 
    GROUP BY application, function 
    ORDER BY application
) AS x
GROUP BY x.application
HAVING COUNT(*) < 3
ORDER BY COUNT(*)

我查询了您在答案中发布的结果集,并获得了每个组的 COUNT。请注意,此 COUNT 是每个 application 组的唯一 function 值的数量。你应该得到这个结果:

+-------------+-----------+
| application | Frequency |
+-------------+-----------+
| Facilities  |     1     |
| SCM         |     1     |
+-------------+-----------+

更新:

一种更简单的查询方式是:

SELECT application, COUNT(DISTINCT function) As Frequency
FROM l3_usage
WHERE function IN ('dbms', 'web', 'app') 
GROUP BY application
HAVING COUNT(DISTINCT function) < 3
ORDER BY application

您一开始的想法是正确的,但您需要为每个应用程序组SELECT 不同函数的数量。

关于mysql - 如何计算已执行的 SQL 查询的不同结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29203533/

相关文章:

mysql - MySQL 中的这个运算符 <=> 是什么?

mysql - 从 Web 编辑 MySql 服务器?

javascript - 处理进出 mysql 的特殊字符

sql - 使用 DISTINCT COUNT 的性能

sql - 当我在 Postgres 中删除一些记录时,查询运行时间太长

oracle - v$sqlarea : why is elapsed_time less than user_io_time + cpu_time?

android - android在滚动结束时动态加载Listview的最佳实践?

sql - 有条件地替换 jsonb 列中每行的单个值

sql - 为什么我在使用更新级联时出现错误?

列表中的 SQL 随机字符串