sqlite GROUP BY 和 ORDER

sqlite GROUP BY and ORDER

是否可以从列状态(字符串)为“REC”的列路径(字符串)获取值,否则如果 status="INFO",...?

SELECT status, count(idFileRemote), 
round(avg(rating), 2) AS rating, 
album, coverhash, path 
FROM tracks 
GROUP BY album  

例如:如果我有

status   Album  Path
------   -----  -----
INFO     foo    path1
REC      foo    path2
OTHER    foo    path3

INFO     bar    path91
OTHER    bar    path93

我会得到

status   Album  Path
REC      foo    path2
INFO     bar    path91

您可以利用 SQLite's bare columnsHAVING 子句中使用条件聚合:

SELECT *
FROM tracks
GROUP BY Album
HAVING MIN(CASE status WHEN 'REC' THEN 1 WHEN 'INFO' THEN 2 ELSE 3 END);

参见demo

请注意,此问题通常可以使用 window 函数解决,但我没有在查询中使用它们,因为 Android 仅从 API 版本 30 开始支持它们。