select application from l3_usage
where function in ('dbms', 'web', 'app')
group by application, function
order by application
这是我执行上述查询时的结果图像。
我现在想计算应用程序出现的次数。例如: 预算 : 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/