我正在进行一个aws雅典娜查询,如下所示:
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作为两个独立的列,但是我想将它们组合成一个列“price range”,它将minprice和maxprice用“-”字符串分隔,所以它看起来像这样:
price_range
3.99 - 5.33
2.11 - 9.99
2.22 - 2.22
我试着通过添加concat来实现这一点,但没有得到有效的结果。我对sql非常陌生,我想知道如何通过将max()和min()结果组合成一个字符串值来创建这个price range列。
另外,我还可以向sql添加逻辑,以便如果价格范围为零(比如在2.22-2.22的情况下,max price和minprice是相同的),只显示单个值,而不是具有相同max/min值的价格范围?
最后一部分是一个延伸的目标,首先我只是想创建price\u range列
2条答案
按热度按时间1aaf6o9v1#
使用
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
jtw3ybtb2#
http://sqlfiddle.com/#!9/85668/44