SQL Server 同一查询中的多个计数 - CosmosDB
Posted
技术标签:
【中文标题】SQL Server 同一查询中的多个计数 - CosmosDB【英文标题】:SQL Server Multiple Counts in the same Query - CosmosDB 【发布时间】:2021-05-25 16:01:51 【问题描述】:我想创建一个查询,计算下面描述的文档集合中的喜欢和不喜欢的总数。
"id": "403031b7-a1b6-4e08-9d82-360bb41b97cd",
"car_id": "0839404d5bc4140f28abfd19329b0ebc",
"created": 1621881785,
"type": "like",
"version": 1,
"fingerprint": "kHqPGWS1Mj18sZFsP8Wl",
"id": "403031b7-a1b6-4e08-9d82-360bb41b97cd",
"car_id": "0839404d5bc4140f28abfd19329b0ebc",
"created": 1621881785,
"type": "unlike",
"version": 1,
"fingerprint": "kHqPGWS1Mj18sZFsP8Wl",
以下内容非常适合一次计数:
SELECT COUNT(1) AS likes from cars c WHERE c.type="like" and c.car_id="0839404d5bc4140f28abfd19329b0ebc"
但我想在同一查询中计算 c.type 为“like”和 c.type="unlike" 的展位喜欢和不喜欢。
结果如下:
"likes": a,
"unlikes": b
【问题讨论】:
【参考方案1】:您可以使用条件聚合:
SELECT SUM(CASE WHEN c.type = 'like' THEN 1 ELSE 0 END) AS likes,
SUM(CASE WHEN c.type = 'unlike' THEN 1 ELSE 0 END) as unlikes
FROM cars c
WHERE c.car_id = '0839404d5bc4140f28abfd19329b0ebc';
或者使用聚合:
select c.type, count(*)
from cars c
where c.car_id = '0839404d5bc4140f28abfd19329b0ebc'
group by c.type;
【讨论】:
巨大的坦克为您提供帮助!我没有得到第一个示例,但似乎 Cosmos DB 在其实现中遗漏了 CASE。 @AntonA 。 . .我想知道为什么有些供应商将语言称为 SQL。叹息。以上是关于SQL Server 同一查询中的多个计数 - CosmosDB的主要内容,如果未能解决你的问题,请参考以下文章