sql - 访问 sql 以检索满足条件的值的计数
问题描述
我正在尝试在 Access 中编写一个查询,该查询将返回表中每个站点的值计数,其中值超过指定级别,而且对于没有超过该级别的值的站点,返回指定值,例如作为"NA"
.
我试过Iif
, Switch
, Union
, 子查询,查询不同的查询,但没有运气。我可以获得超过该级别的所有计数,或者所有"NA"
正确但显示其余站点的总计数的站点,而不仅仅是高于该级别的计数。
例如,在下表中,假设 level > 10,Houston = "NA",Detroit = 2,Pittsburgh PA = 3。我只是无法让查询的双方都工作。
提前为糟糕的格式道歉。
+-----------------+-------+
| 1. Site | Value |
+-----------------+-------+
| 2. Houston | 10 |
| 3. Houston | 3 |
| 4. Houston | 0 |
| 5. Detroit | 15 |
| 6. Detroit | 7 |
| 7. Detroit | 4 |
| 8. Detroit | 12 |
| 9. Pittsburgh | 23 |
| 10. Pittsburgh | 2 |
| 11. Pittsburgh | 18 |
| 12. Pittsburgh | 12 |
+-----------------+-------+
解决方案
- 获取与计数无关的所有站点的列表(下面的 SiteList 派生表)
- LEFT 将此连接回您的基表 (SiteValues) 以获取每个达到阈值的站点的计数。--note 应该加入我不确定该表是什么的键。仅网站是不够的
- 将 siteValues 数据集中的值计算为 NULL 将被计为 0。
工作演示:。
SELECT SiteList.Site, Count(Sitevalues.Site)
FROM (SELECT site, value
FROM TableName) SiteList
LEFT JOIN TableName SiteValues
on SiteList.Site = SiteValues.Site
and SiteValues.Value > 10
and SiteValues.Value = SiteList.value
GROUP BY SiteList.Site
给我们:
+----+------------+------------------+
| | Site | (No column name) |
+----+------------+------------------+
| 1 | Detroit | 2 |
| 2 | Houston | 0 |
| 3 | Pittsburgh | 3 |
+----+------------+------------------+
或者,如果您需要 NA,则必须将计数转换为 varchar
SELECT SiteList.Site, case when Count(Sitevalues.Site) = 0 then 'NA' else cast(count(Sitevalues.site) as varchar(10)) end as SitesMeetingThreshold
FROM (SELECT site, value
FROM TableName) SiteList
LEFT JOIN TableName SiteValues
on SiteList.Site = SiteValues.Site
and SiteValues.Value > 10
and SiteValues.Value = SiteList.value
GROUP BY SiteList.Site
推荐阅读
- ngrx - MemoizedSelector 的目的是什么
在 NgRx 中? - java - JUnit 测试一个公共方法对非公共字段的影响
- javascript - 用于甜甜圈chart.js的vue组件中的重叠文本
- javascript - 尝试使用 vue js 组件创建引导轮播
- java - 是否可以将特定类型的不可变集绑定到 Guice 中的实例?
- r - 基于使用第一天的队列
- symfony - Docker Wkhtmltopdf HostNotFoundError
- python - 您是否需要安装 C++ 才能运行带有 C++ 模块的 Python 程序?
- java - 在用于 MLP 模型的 Weka Java API 中将多个属性设置为类属性
- spring - Spring Boot 资源 spring.factories 在生成的 Artifact/jar 中不可用