我有一个sql聚合函数,它将获取每个唯一的标准化\u品牌的数据,除了我的字段“brand \u gap”之外,所有内容都可以工作,在这个查询中,品牌“richell”有5个结果,每个结果的brand \u gap列设置为等于一个字符串“no”,如何从聚合函数中的brand \u gap列获得单个字符串结果?
SELECT
normalised_brand,
COUNT(DISTINCT merch1) merch1_distinct_count,
COUNT(DISTINCT category_level_1) category_level_1_distinct_count,
COUNT(*) product_distinct_count,
CONCAT(CAST(MIN(effective_price) as varchar(10)),' - ', CAST(MAX(effective_price) as varchar(10))) price_range,
null amazon_choice,
CAST(ROUND(COALESCE(AVG(rating),0),2) as varchar(10)) rating,
CAST(COALESCE(SUM(review_count),0) as varchar(10)) review_count,
SUM(CAST(questions_count AS INTEGER)) Q_and_A
-- CONCAT(CAST(brand_gap as varchar(10)),' - ') brand_gap,
-- FIRST (brand_gap)
FROM
"scoring"."final_data"
WHERE
product_gap = 'yes'
AND store_name = 'petco'
AND normalised_brand = 'Richell'
GROUP BY
normalised_brand
所以“品牌差距”列中的所有结果总是有一个值,如何才能得到单个品牌差距值?比如选择最常出现的值?或者选择一个随机值?或者选择第一个结果值?
谢谢
3条答案
按热度按时间t1qtbnec1#
你标记了错误的dbms。在mysql中,您将使用
ANY_VALUE
,您可以使用MIN
或者MAX
在亚马逊雅典娜。这无关紧要,因为组中所有行的值都是相同的。如果您只需要任何值(因为它们对于组都是相同的),请使用“any\u value”:
mjqavswn2#
您可以使用first\ u值或first函数根据数据库的结果从组中获取第一个值。
参考http://www-db.deis.unibo.it/courses/tw/docs/w3schools/sql/sql_func_first.asp.html 对于特定于数据库的第一个值
在选择组中的第一个和最后一个值时可以找到其他替代方法
vm0i2vca3#
在雅典娜有一个聚合函数叫做
ARBITRARY
它从组中选择一个值,在这种情况下在语义上似乎是合适的。