我需要帮助来解决我的问题与DB查询.在我的数据库里面,我有一些不同的电视台.这些电台的大多数有不同的分辨率提供.即. 4K,FHD,HD,SD,.现在我想为每个站选择不同.这很容易,但我总是想得到这个电视台的最高分辨率行.
示例:
|DE|ZDF
|DE|ZDF HD
|DE|RTL
|DE|RTL FHD
|DE|RTL HD
|DE|SAT1
输出应为:
|DE|ZDF HD
|DE|RTL FHD
|DE|SAT1
你能帮我一下吗?
这并不像预期的那样工作:
SELECT
sender,
MAX(quality) AS quality
FROM (
SELECT
SUBSTR(tvg_name, 1, INSTR(tvg_name, '|') - 1) AS sender,
CASE
WHEN tvg_name LIKE '%4K' THEN '4K'
WHEN tvg_name LIKE '%FHD' THEN 'FHD'
WHEN tvg_name LIKE '%HD' THEN 'HD'
ELSE 'SD'
END AS quality
FROM derek
WHERE tvg_name LIKE '|DE%'
) AS temp
GROUP BY sender;
1条答案
按热度按时间kupeojn61#
注意以下几点(特别是评论):
上面的结果(它有额外的列来显示中间结果/列),使用您所示的数据,是:
当然,由于涉及的复杂性,对多个数据使用一个列是不可取的。每个数据(国家、站点、质量)一个列将大大简化上述操作。
例如:假设你有:
然后你可以使用,更简单:
然后产生: