Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 跨多个列处理布尔值_Sql_Postgresql_Count_Aggregate Functions - Fatal编程技术网

Sql 跨多个列处理布尔值

Sql 跨多个列处理布尔值,sql,postgresql,count,aggregate-functions,Sql,Postgresql,Count,Aggregate Functions,在花了数周时间对我的数据集进行分析之后,我逐渐意识到一些可疑的事情,实际上可能会影响我分析的准确性(太糟糕了) 在我的表segments中,包含了按用户出行模式划分的用户出行段,因此每个段在其相应的出行模式上都有真实值,我意识到一些段实际上在多个出行模式下都有真实值。这可能是来自用户注释的错误,例如: SELECT trip_id, segment_id, true_foot, true_bike, true_bus, true_car, true_metro FROM segments W

在花了数周时间对我的数据集进行分析之后,我逐渐意识到一些可疑的事情,实际上可能会影响我分析的准确性(太糟糕了)

在我的表
segments
中,包含了按用户出行模式划分的用户出行段,因此每个段在其相应的出行模式上都有真实值,我意识到一些段实际上在多个出行模式下都有真实值。这可能是来自用户注释的错误,例如:

SELECT trip_id, segment_id, true_foot, true_bike, true_bus, true_car, true_metro 
FROM segments 
WHERE trip_id=533888 limit 10;
 trip_id | segment_id | true_foot | true_bike | true_bus | true_car | true_metro 
---------+------------+-----------+-----------+----------+----------+------------
  533888 |         55 | t         | f         | f        | t        | f
  533888 |         53 | t         | f         | f        | t        | f
  533888 |         51 | t         | f         | f        | t        | f
  533888 |         49 | t         | f         | f        | t        | f
  533888 |         47 | t         | f         | f        | t        | f
  533888 |         45 | t         | f         | f        | t        | f
  533888 |         43 | t         | f         | f        | t        | f
  533888 |         41 | t         | f         | f        | t        | f
  533888 |         37 | t         | f         | f        | t        | f
  533888 |         35 | t         | f         | f        | t        | f
(10 rows)
在这种情况下,对
foot
car
模式的段进行了注释

我别无选择,只能:

  • 获取此类段的总数(如果不多,请在我的筛选中跳过)

  • 以某种方式手动检查用户的模式,以验证每个段的模式(最糟糕的情况:耗时、报告不足、容易出错)


  • 如何获得具有多个行程模式的段数?

    您可以将
    布尔值转换为
    整数,然后在多个列中计算具有
    真值的行数:

    select count(*)
    from segments
    where (true_foot::integer + true_bike::integer + true_bus::integer + true_car::integer + true_metro::integer) > 1
    

    您可以将
    布尔值
    强制转换为
    整数
    ,然后在多个列中计算具有
    true
    的行:

    select count(*)
    from segments
    where (true_foot::integer + true_bike::integer + true_bus::integer + true_car::integer + true_metro::integer) > 1
    

    也许只有我一个人,但我发现布尔列的前缀
    true
    非常令人困惑。我通常会根据它实际包含的内容来选择
    is\u
    was\u
    has\u
    ,可能只是我自己,但我发现布尔列的前缀
    true\u
    非常令人困惑。我通常会根据实际情况选择
    is\u
    was\u
    has\u
    contains@horse_with_no_name但它必须至少是2Ah,我没有看到。@horse_没有名字,但它必须至少是2Ah,我没有看到。