sql - 如何计算总记录并分别计算两个字段相等的记录
问题描述
假设我有一个名为 VISITS 的表格:
Date1
我需要计算每个位置的总记录数,然后对那些Date2
值相等的记录进行单独计数。最终结果应如下所示:
我可以使用以下方法计算总数:
从访问组按位置选择位置,计数(*)作为“总访问次数”
我可以通过这样做来计算匹配的访问次数
选择 Location, Count(*) as 'Total Matched' From Visits where Date1 = Date2 group by Location
但我不知道如何用一个查询来做这两个计数。
解决方案
使用条件聚合:
select v.Location, Count(*),
sum(case when v.date1 = v.date2 then 1 else 0 end) as same_day
from Visits v
group by v.location;
请注意,您的查询缺少该group by
子句。
推荐阅读
- javascript - 如何在 react-leaflet 中使用 Leaflet 的 FeatureGroup 和 OverlappingMarkerSpiderfier?
- python - A python HTTP server does not accept connections
- javascript - How to show simple json file data on html Page?
- ios - 将“prefersLargeTitle”设置为 true 的 UINavigationController 不会立即显示大标题 - 您必须向上滚动才能显示
- mongodb - MongoDB查询以在数组中添加新元素或如果属性之一未更改则更新元素
- javascript - 多个计数器如何隔离哪个状态 - React Hooks
- c# - 将错误从 C# Web 服务返回到 Angular 应用程序
- node.js - yurn start 成功完成后,Node.js docker 容器以退出代码 0 退出
- javascript - 如何配置 AWS CDK 账户和区域以查找 VPC
- c++ - 这篇 cppreference.com 文章的结尾有问题