use*_*907 5 mysql sql group-by
我在MySQL表中有以下数据.
+--------+----------+------+
| job_id | query_id | done |
+--------+----------+------+
| 15145 | a002 | 1 |
| 15146 | a002 | 1 |
| 15148 | a002 | 1 |
| 15150 | a002 | 1 |
| 15314 | a003 | 0 |
| 15315 | a003 | 1 |
| 15316 | a003 | 0 |
| 15317 | a003 | 0 |
| 15318 | a003 | 1 |
| 15319 | a003 | 0 |
+--------+----------+------+
Run Code Online (Sandbox Code Playgroud)
我想知道是否有可能有一个SQL查询,可以通过query_id进行分组,如果所有'完成'字段都标记为1.我想象的可能输出是:
+----------+------+
| query_id | done |
+----------+------+
| a002 | 1 |
| a003 | 0 |
+----------+------+
Run Code Online (Sandbox Code Playgroud)
我尝试了以下SQL查询:
select job_id, query_id, done from job_table group by done having done = 1 ;
Run Code Online (Sandbox Code Playgroud)
但没有运气.我真的很感激任何帮助!
我对这个解决方案并不是特别自豪,因为它不是很清晰,但至少它快速且简单。如果所有项目均已“完成”= 1,则总和将等于计数 SUM = COUNT
SELECT query_id, SUM(done) AS doneSum, COUNT(done) AS doneCnt
FROM tbl
GROUP BY query_id
Run Code Online (Sandbox Code Playgroud)
如果你添加一个having子句,你就会得到“完成”的项目。
HAVING doneSum = doneCnt
Run Code Online (Sandbox Code Playgroud)
我会让你正确格式化解决方案,你可以做一个差异来获取“未完成”的项目或doneSum<>doneCnt。
顺便说一句,SQL在这里摆弄。
归档时间: |
|
查看次数: |
23161 次 |
最近记录: |