如何按最后4列中TRUE值的数量对SQL查询结果排序?
表格数据提取与排序实现
需求说明
我有一个指定结构的表格,需要提取Validity列的数据,并按照表格最后4列中TRUE值的数量从多到少排序。预期输出示例如下:
1110 // 4个true值 1001 // 2个true值 1000 // 1个true值
实现方案(以SQL为例)
假设表格最后4列分别命名为col1、col2、col3、col4,可以通过以下步骤实现:
- 计算每一行最后4列中
TRUE值的总数 - 按照该总数降序排序,输出
Validity值及对应的true数量注释
对应的SQL语句如下:
-- 先计算每行的true数量,再排序输出结果 SELECT CONCAT(validity, ' // ', true_count, '个true值') AS 输出结果 FROM ( SELECT validity, -- 逐列判断是否为TRUE,累加计数 (CASE WHEN col1 THEN 1 ELSE 0 END + CASE WHEN col2 THEN 1 ELSE 0 END + CASE WHEN col3 THEN 1 ELSE 0 END + CASE WHEN col4 THEN 1 ELSE 0 END) AS true_count FROM your_table -- 替换为你的表名 ) temp_table ORDER BY true_count DESC;
如果只需要输出Validity值,可简化语句:
SELECT validity FROM ( SELECT validity, (CASE WHEN col1 THEN 1 ELSE 0 END + CASE WHEN col2 THEN 1 ELSE 0 END + CASE WHEN col3 THEN 1 ELSE 0 END + CASE WHEN col4 THEN 1 ELSE 0 END) AS true_count FROM your_table ) temp_table ORDER BY true_count DESC;
内容的提问来源于stack exchange,提问作者user1298426
相关产品推荐
相关产品推荐

