mysql - ClickHouse SQL 数据库中产品可用性的完整性分析
问题描述
文档:https ://clickhouse.tech/docs/en/
目标:品牌产品系列的 85% 应可供购买
- 按可用性计算每个品牌的产品数量(maxItems > 0)
- 根据可供购买的商品种类对品牌进行细分:
- 绿色:> 85%
- 黄色:70-84%
- 红色:0-69%
- 完毕:
SELECT brand, COUNT(1) AS cnt
FROM products
WHERE maxItems > 0
GROUP BY brand
ORDER BY cnt DESC;
行。
- 下面是一个要解决的例子:
每个品牌都有一个分类,但不是全部可用,只有一些百分比。您需要使用以下公式计算每个品牌的百分比:
(所有产品的数量 (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
我应该在代码中修复什么以仅按品牌计算百分比?谢谢你。
解决方案
SELECT brand, (count() - countIf(maxItems = 0)) / count() * 100 as cnt
FROM products
GROUP BY brand
HAVING cnt > 85
ORDER BY cnt DESC
LIMIT 1000;
推荐阅读
- ios - iPad Pro 上的 Tab 键按下会导致对所有文本字段调用 textFieldShouldBeginEditing(_:)
- angular - 声明和初始化二维数组打字稿
- angular - 如何使用 Angular 6 向启用了相互 SSL(massl)的服务器调用 HTTP 请求?
- python - 如何在 Excel 中用“\n”字符串替换换行符
- wso2 - 多个 WSO2 API 管理器可以与单个 WSO2IS-KM 5.7.0 集成吗?
- elasticsearch - 如何根据字段值过滤查询
- javascript - 将 h2 标签更改为 h1 标签
- ionic-framework - 运算符 '==' 不能应用于类型 'Promise
'和'字符串'。- 离子 - html - 将移动触摸设备的 :hover 更改为 :active
- c++ - Boost 无法分配请求的地址