首页 > 解决方案 > ClickHouse SQL 数据库中产品可用性的完整性分析

问题描述

文档:https ://clickhouse.tech/docs/en/

目标:品牌产品系列的 85% 应可供购买

  1. 按可用性计算每个品牌的产品数量(maxItems > 0)
  2. 根据可供购买的商品种类对品牌进行细分:
  1. 完毕:
SELECT brand, COUNT(1) AS cnt
    FROM products
        WHERE maxItems > 0
    GROUP BY brand
    ORDER BY cnt DESC;

行。

  1. 下面是一个要解决的例子:

每个品牌都有一个分类,但不是全部可用,只有一些百分比。您需要使用以下公式计算每个品牌的百分比:

(所有产品的数量 (id) - 不可用的产品数量 (maxItems = 0)) / count(id) * 100% = result %

以下是请求的示例:

SELECT brand, 
    (((SELECT COUNT(1) FROM products) -
    (SELECT COUNT(1) FROM products WHERE maxItems = 0)) / 
    (SELECT COUNT(1) FROM products) * 100) as cnt
    FROM products
        WHERE cnt > 85
    GROUP BY brand
    ORDER BY cnt DESC
    LIMIT 1000;

结果:

brand   cnt
Amorem  99.27102236131287
VALENS  99.27102236131287
FARFAL  99.27102236131287
VIAILA  99.27102236131287
4Kids   99.27102236131287

我应该在代码中修复什么以仅按品牌计算百分比?谢谢你。

标签: mysqlsqldata-analysisclickhouse

解决方案


SELECT brand, (count() - countIf(maxItems = 0)) / count() * 100 as cnt
    FROM products
    GROUP BY brand
    HAVING cnt > 85
    ORDER BY cnt DESC
    LIMIT 1000;

推荐阅读