【发布时间】:2019-01-07 04:26:24
【问题描述】:
我有一个包含数据(例如)的表(reason_table):
request_id created_time type detail
asdas232 2018-07-29 00:00:01 NO_VALID No valid offer for id asdas232
aseeas232 2018-07-29 00:00:02 NO_VALID Not default offer for id aseeas232
我正在尝试根据详细信息(如上)来获取计数:
invalidOffer = 1
NoDefaultOffer = 1
我试过了:
SELECT detail, count(*)
FROM reason_table
where "type" like '%NO_VALID%'
and created_time >= '2018-07-29 00:00:00'
and created_time <= '2018-07-29 00:00:10'
GROUP BY
CASE
WHEN detail LIKE '%invalid%' THEN 'invalidOffer'
WHEN detail LIKE '%default%' THEN 'NoDefaultOffer'
ELSE NULL
END
但出现错误提示 SQL Error [500310] [42803]: [ Invalid operation: column "detail" must appear in the GROUP BY clause or be used in an aggregate function;
有人能帮我找出我做错了什么吗? 我正在使用 DBeaver 从 redshift 中查询数据
【问题讨论】:
-
您正在按不在结果集中的列进行分组。你想在这里做什么?您使用的是哪个 DBMS? sql server mysql.
-
有点迂腐...不是他们按不在结果集中的列进行分组;这实际上是相当普遍的。这是他们选择的列不在
group by列表中。
标签: mysql sql sql-server group-by case