sql - SQL聚合,从列中获取字符串值
问题描述
我有一个 SQL 聚合函数,它将获取每个唯一 normalised_brand 的数据,除了我的字段“brand_gap”外,一切正常,在此查询中,品牌“Richell”有 5 个结果,每个结果的 brand_gap 列设置为等于一个字符串“ no',如何从聚合函数中的brand_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
所以brand_gap 列对于所有结果总是有一个值,我怎样才能得到一个brand_gap 值?比如选择最常出现的值?或选择一个随机值?还是选择第一个结果值?
谢谢
解决方案
您标记了错误的 DBMS。在 MySQL 中您将使用ANY_VALUE
,您可以在 Amazon Athena中使用MIN
or 。MAX
这无关紧要,因为组中所有行的值都是相同的。
SELECT
normalised_brand,
...
MIN(brand_gap) AS brand_gap
...
SELECT
normalised_brand,
...
ANY_VALUE(brand_gap) AS brand_gap
...
推荐阅读
- javascript - 使带有多边形的svg文件可点击
- android - 谁能帮我解决flutter i中的这个gradle构建问题,已经尝试更新build.gradle并安装android工具链
- android - Flutter - 错误:没有方法签名:build_alrohbcqffdojo30hcvnhe46c.android() 适用于参数类型:
- reactjs - 使用 setHovered() 时如何更改网格,试图让它们单独更改
- javascript - 调试器打开一个未知的“源”文件
- javascript - 我的地图函数返回 React 组件时出错
- c# - 如何使用 AutoMapper 合并数组?
- html - 在自定义 html 中使用查询字符串参数?
- c# - 带有外部 resx 文件的 IStringLocalizer
- python - 如何从响应数据包中确定查询数据包的大小 - Scapy