![](/img/trans.png)
[英]SQL: Compare difference in two columns of different rows and compare with value
[英]How to compare the value of two rows with SQL?
我正在使用sqlite數據庫。 我的表架構是
CREATE TABLE performance(area TEXT, name TEXT, score INTEGER, dt TEXT)
表中的內容如下:
uk|josh|4|2013-11-04 20:00
ca|josh|2|2013-11-05 20:00
us|josh|6|2013-11-05 20:00
uk|andy|5|2013-11-04 20:00
us|andy|1|2013-11-05 20:00
uk|sara|9|2013-11-05 20:00
ca|sara|7|2013-11-06 20:00
ca|sara|2|2013-11-06 20:00
我使用以下sql語句選擇名稱及其按名稱和dt分組的相應分數總和。
select name, sum(score), dt from performance group by name, dt;
我有
josh|4|2013-11-04 20:00
josh|8|2013-11-05 20:00
andy|5|2013-11-04 20:00
andy|1|2013-11-05 20:00
sara|9|2013-11-05 20:00
sara|9|2013-11-06 20:00
現在,我想擴展查詢,以便sql語句可以搜索分數總和在不同時間(dt)不變的內容。 在這種情況下,輸出應該是:
sara|9|2013-11-05 20:00
sara|9|2013-11-06 20:00
如何撰寫這樣的sql?
這可以通過自(反)連接來實現:
SELECT a.*
FROM (SELECT name, dt, SUM(score) as sum_score
FROM performance
GROUP BY name, dt) a
JOIN (SELECT name, dt, SUM(score) as sum_score
FROM performance
GROUP BY name, dt) b
ON a.name = b.name AND a.sum_score = b.sum_score AND a.dt < b.dt
select dt, name, sum(score), dt
from performance
group by name, dt
having count(*) > count(distinct score);
*注意:如果您按dt, name
分組,我想您也應該顯示它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.