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 columns 在 HAVING
子句中使用条件聚合:
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 开始支持它们。
是否可以从列状态(字符串)为“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 columns 在 HAVING
子句中使用条件聚合:
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 开始支持它们。