【问题标题】:SQL Server Multiple Counts in the same Query - CosmosDBSQL Server 同一查询中的多个计数 - 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
}

【问题讨论】:

    标签: sql


    【解决方案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。叹息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    相关资源
    最近更新 更多