在 sqlite 中计算基于 2 列(每 1 列 1 个条件)的 2 个条件的百分比

Calculate a Percentage based off 2 conditions for 2 columns (1 cond per 1 col) in sqlite

鉴于下面的 table 格式

id  book_name(TEXT) rating(REAL)
1   The Book          50.0
2   Perks Of          30.2
3   book game         100.0 
4   Hobbit            80.0

我想计算 book_name 文本中包含“book”(不区分大小写)且评分高于 50.0 的百分比。该百分比将计算为(满足 2 个条件的行数/总行数)。这种情况下的答案是通过 2/4 = 50.0 计算的(这是百分比形式)

我想要 return 50.0 作为答案

您可以在 SUM() 中使用 CASE 语句来进行条件计数 -

SELECT ROUND((SUM(CASE WHEN book_name LIKE '%book%' AND rating >= 50 THEN 1 END)/COUNT(*)) * 100, 1)
FROM books

更新

我在两个 COUNT 的除法周围添加了另一对括号,以解决@ChrisCharley 在下面的评论中提到的问题。

您可以在条件下使用正则表达式使用 lower then 过滤器

import pandas as pd
data = {"id":[1,2,3,4], "book_name(TEXT)":["The Book","Perks Of","book game","Hobbit"],"rating(REAL)":[50.0,30.2,100.0, 80.0] }
data = pd.DataFrame(data)
data["lower"] = data["book_name(TEXT)"].str.lower()
data1 = data[data.lower.str.contains("book")==True]
data1 = data1[data1["rating(REAL)"]>=50.0]
(len(data1)/len(data))*100