SQLiteバージョン3.3.6
sqliteにテーブルがあります
CREATE TABLE stats (Date TEXT , Sub TEXT , DELAY95TH INT ) ;
ここで、各行は:
Date |Sub|Delay
2012-06-25|212|750
2012-06-25|214|1180
2012-06-25|216|14902
タスクは、要約された遅延によってSubがトップ10からのすべてのレコードを取得することです
これを行うSQL:
Select
Date, Sub, Delay
from
stats
where
Sub in (select Sub
from stats
group by Sub
order by SUM(Delay) desc limit 10 ) ;
ただし、結果は得られません。「orderby」句を削除するとすぐにクエリが機能し始めます。
したがって、たとえば:
select
Date, Sub, Delay
from
stats
where
Sub in (select Sub from stats group by Sub limit 10);
うまく機能し、期待されるものを生み出します。
これ以上。同じインスタンスにテーブルもあります:
CREATE TABLE data ( Date DATE , Sub INT, Subcont TEXT, Session INT, MsgType TEXT, Score INT);
問題のあるものと同様に選択すると、正常に機能します。
select
Subcont, MsgType, SUM(Score)
from
data
where
Subcont in (select Subcont
from data
group by Subcont
order by sum(Score) desc limit 10)
group by
Subcont, MsgType
order by
Subcont, MsgType;
ほぼ同じことを行います。要約されたスコアによって上位10のサブコンテンツを識別し、これらのサブコンテンツを含むすべてのレコードを表示します。そしてそれはうまくいきます!