select application from l3_usage
where function in ('dbms', 'web', 'app')
group by application, function
order by application
执行上述查询时,这是结果图像。
我想现在计算应用程序发生的次数。例如: 预算:3 CSR:3 FMS:3 设施:1 库存:3
等...
我试过了
select application, count(application) from l3_usage
where function in ('dbms', 'web', 'app')
group by application
order by application
但我得到的随机计数与我正在寻找的计数无关。
有人可以帮忙吗?谢谢!
编辑:::::
我这样做的最终目的是只获得计数值小于3的应用程序。
在这种情况下,应该只返回“设施”和“SCM”。
答案 0 :(得分:2)
尝试此查询:
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
是每个function
组的唯一application
值的数量。你应该得到这个结果:
+-------------+-----------+
| 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
每个应用程序组的不同function
个数。
答案 1 :(得分:0)
SELECT application,COUNT(CASE
WHEN application IS NOT NULL THEN 1
END)
FROM table group by application
我从here
找到了引用select * from(
SELECT typing,COUNT(CASE
WHEN typing IS NOT NULL THEN 1
END) as counts
FROM ss group by typing ) abc where counts<3
答案 2 :(得分:0)
我使用了已连接的子查询对您的查询进行计数。如果您想要明确的行数,请在 @count 查询
中的distinct
前面使用count(*)
declare @count nvarchar(max)= (select count(*)
from l3_usage
where function in ('dbms', 'web', 'app'))
declare @sql nvarchar(max) = 'select a,count(*),'+@count+' as count from l3_usage
where function in (''dbms'', ''web'', ''app'') '
exec(@sql)