sql - 计算行和列中值的频率 SQL
问题描述
我有一个 SQLite 数据库,我正在尝试计算列中值的出现次数以及相应行中的值。
我的数据集是:
participant_id game_id win selected_champion
2 3640481414 0 Yasuo
7 3643429174 0 Gangplank
10 3643470467 1 Jhin
5 3643669725 0 Rammus
10 3643707347 1 Talon
10 3644255324 1 Sivir
5 3644305477 1 Sion
8 3644626709 1 Shaco
5 3645020045 1 Warwick
10 3645063546 0 Jhin
并且预期的输出将类似于
selected_champion games_played games_won
Gangplank 1 1
Jhin 2 1
Rammus 1 0
我可以通过查询获得玩过的游戏数
SELECT
selected_champion,
count(selected_champion) as 'games_played'
FROM (myTable) GROUP BY selected_champion
但是我似乎无法弄清楚如何计算与冠军相比获胜的次数= 1。
解决方案
您可以将其相加,因为它采用值 0 和 1:
SELECT selected_champion, COUNT(*) as games_played, SUM(win) as games_won
FROM myTable
GROUP BY selected_champion;
更通用的解决方案是将其转换为布尔值:
SUM( win = 1 )
或适用于任何数据库的版本:
SUM(CASE WHEN win = 1 THEN 1 ELSE 0 END)
推荐阅读
- homomorphism - 在同态加密中隐藏和使用私钥是否可能或安全
- sql - 如何为类似 CSS 的选择器创建数据库结构?
- graphics - 查找二维中两点之间的旋转角度,倒置 y 轴
- nest-device-access - 尝试设置恒温器热量设定点时出现内部错误
- firebase - 如果低于某个值,Firestore 规则允许读取字段
- python - 使用 Google Cloud Scheduler 在 Google Cloud Platform 中启动/停止 Kubernetes 集群
- symfony - 带有 EventSubscriber 的 Symfony 5.2 FileType 导致 Validationerror
- pointers - 如何检查 Box 是否为空指针?
- reactjs - 包裹在 Pressable 中的 react-native-swiper 在 iOS 上无法正常工作
- java - 为什么 glassfish 服务器只在重新启动后才加载一个 bean?