sql - sql; 将 MIN(price) 和 MAX(price) 连接到列中?
问题描述
我正在处理这样的 aws athena 查询:
SELECT
normalised_brand,
COUNT(DISTINCT merch1) merch1_distinct_count,
COUNT(DISTINCT category_level_1) category_level_1_distinct_count,
COUNT(*) product_distinct_count,
MIN(effective_price) maxprice,
MAX(effective_price) minprice
-- CONCAT_WS(' - ', minprice, maxprice) price_range
FROM "db"
WHERE product_gap = 'yes' AND store_name = 'petco'
group by normalised_brand
这将给出如下结果:
现在我将 maxprice 和 minprice 作为两个单独的列,但我想将它们组合成一列“价格范围”,其中 minprice 和 maxprice 由“-”字符串分隔,所以它看起来像这样:
price_range
3.99 - 5.33
2.11 - 9.99
2.22 - 2.22
我尝试通过添加 CONCAT 来做到这一点,但没有得到工作结果。我对 sql 很陌生,我想知道如何通过将 MAX() 和 MIN() 结果组合成一个字符串值来创建这个价格范围列。
此外,我可以向 SQL 添加逻辑,以便如果价格范围为零(例如 2.22 - 2.22 的情况,其中最高价格和最低价格相同)仅显示单个值而不是具有相同最高价格的价格范围/最小值?
最后一部分是一个延伸目标,首先我只是试图创建 price_range 列
解决方案
采用concat()
SELECT
normalised_brand,
COUNT(DISTINCT merch1) merch1_distinct_count,
COUNT(DISTINCT category_level_1) category_level_1_distinct_count,
COUNT(*) product_distinct_count,
MIN(effective_price) maxprice,
MAX(effective_price) minprice
concat(cast(MIN(effective_price) as varchar(10)),'-',cast(MAX(effective_price) as varchar(10)))
FROM "db"
WHERE product_gap = 'yes' AND store_name = 'petco'
group by normalised_brand
推荐阅读
- matlab - 如何保存在 MATLAB simulink 操作中间生成的值
- python - 熊猫阻止我下载我不想拥有的文件
- android - 异常:视图没有设置 navController
- c - 未找到 C 结构类型,包括库,错误“未知类型名称”
- android - LocationAwareException:任务“:app:processDebugManifest”执行失败
- java - 为对象创建定义的值
- go - 如果查询限制很大,goroutines 中的 GORM 会冻结
- java - Java - 扫描仪读取没有赋值的字符串(已解决)
- r - 表频率和直方图之间的差异... geom_histogram 向下取整?
- html - 数组的每个值的垫输入