add batch remove batch split batch show hidden batches hide batch
db<>fiddle
feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
version()
8.0.23
category model cnt rn
car m1 1 2
car m2 3 1
elmo m5 1 2
elmo m6 2 1
truck m9 1 2
truck m10 3 1
category model cnt
car m2 3
elmo m6 2
truck m10 3
category model cnt
car m2 3
elmo m6 2
truck m10 3
EXPLAIN
-> Sort: a.category (actual time=0.009..0.009 rows=3 loops=1)
    -> Index lookup on a using <auto_key0> (rn=1) (actual time=0.001..0.002 rows=3 loops=1)
        -> Materialize (actual time=0.218..0.219 rows=3 loops=1)
            -> Sort: v.category, cnt DESC (actual time=0.195..0.196 rows=6 loops=1)
                -> Table scan on <temporary> (actual time=0.000..0.001 rows=6 loops=1)
                    -> Temporary table (actual time=0.187..0.188 rows=6 loops=1)
                        -> Window aggregate: row_number() OVER (PARTITION BY v.category ORDER BY count(v.model) desc ) (actual time=0.175..0.181 rows=6 loops=1)
                            -> Sort: v.category, cnt DESC (actual time=0.172..0.173 rows=6 loops=1)
                                -> Table scan on <temporary> (actual time=0.001..0.002 rows=6 loops=1)
                                    -> Aggregate using temporary table (actual time=0.157..0.159 rows=6 loops=1)
                                        -> Nested loop inner join (cost=9.05 rows=11) (actual time=0.034..0.122 rows=11 loops=1)
                                            -> Nested loop inner join (cost=5.20 rows=11) (actual time=0.027..0.071 rows=11 loops=1)
                                                -> Index scan on vs using vs_s_id_fk (cost=1.35 rows=11) (actual time=0.017..0.026 rows=11 loops=1)
                                                -> Single-row index lookup on s using PRIMARY (sale_id=vs.vs_sale_id) (cost=0.26 rows=1) (actual time=0.004..0.004 rows=1 loops=11)
                                            -> Single-row index lookup on v using PRIMARY (vin=vs.vs_vin) (cost=0.26 rows=1) (actual time=0.004..0.004 rows=1 loops=11)
EXPLAIN
-> Nested loop inner join (actual time=0.382..0.390 rows=3 loops=1)
    -> Sort: a.category, a.cnt (actual time=0.007..0.008 rows=6 loops=1)
        -> Table scan on a (cost=3.74 rows=11) (actual time=0.001..0.001 rows=6 loops=1)
            -> Materialize (actual time=0.189..0.191 rows=6 loops=1)
                -> Sort: v.category, cnt DESC (actual time=0.170..0.171 rows=6 loops=1)
                    -> Table scan on <temporary> (actual time=0.001..0.002 rows=6 loops=1)
                        -> Aggregate using temporary table (actual time=0.156..0.158 rows=6 loops=1)
                            -> Nested loop inner join (cost=9.05 rows=11) (actual time=0.034..0.120 rows=11 loops=1)
                                -> Nested loop inner join (cost=5.20 rows=11) (actual time=0.026..0.069 rows=11 loops=1)
                                    -> Index scan on vs using vs_s_id_fk (cost=1.35 rows=11) (actual time=0.017..0.026 rows=11 loops=1)
                                    -> Single-row index lookup on s using PRIMARY (sale_id=vs.vs_sale_id) (cost=0.26 rows=1) (actual time=0.004..0.004 rows=1 loops=11)
                                -> Single-row index lookup on v using PRIMARY (vin=vs.vs_vin) (cost=0.26 rows=1) (actual time=0.004..0.004 rows=1 loops=11)
    -> Index lookup on y using <auto_key0> (category=a.category, mcnt=a.cnt) (actual time=0.001..0.001 rows=0 loops=6)
        -> Materialize (actual time=0.032..0.033 rows=0 loops=6)
            -> Sort: x.category (actual time=0.179..0.180 rows=3 loops=1)
                -> Table scan on <temporary> (actual time=0.000..0.001 rows=3 loops=1)
                    -> Aggregate using temporary table (actual time=0.174..0.175 rows=3 loops=1)
                        -> Table scan on x (cost=3.74 rows=11) (actual time=0.001..0.001 rows=6 loops=1)
                            -> Materialize (actual time=0.157..0.159 rows=6 loops=1)
                                -> Sort: v.category, cnt DESC (actual time=0.151..0.151 rows=6 loops=1)
                                    -> Table scan on <temporary> (actual time=0.001..0.001 rows=6 loops=1)
                                        -> Aggregate using temporary table (actual time=0.141..0.142 rows=6 loops=1)
                                            -> Nested loop inner join (cost=9.05 rows=11) (actual time=0.022..0.107 rows=11 loops=1)
                                                -> Nested loop inner join (cost=5.20 rows=11) (actual time=0.016..0.059 rows=11 loops=1)
                                                    -> Index scan on vs using vs_s_id_fk (cost=1.35 rows=11) (actual time=0.011..0.019 rows=11 loops=1)
                                                    -> Single-row index lookup on s using PRIMARY (sale_id=vs.vs_sale_id) (cost=0.26 rows=1) (actual time=0.003..0.003 rows=1 loops=11)
                                                -> Single-row index lookup on v using PRIMARY (vin=vs.vs_vin) (cost=0.26 rows=1) (actual time=0.004..0.004 rows=1 loops=11)
category model cnt
car m2 3
elmo m6 2
truck m10 3
category model cnt
car m2 3
elmo m6 2
truck m10 3
Query_ID Duration Query
1 0.01770725 SELECT
  a.category, a.model, a.cnt
  -- , y.category, y.mcnt -- the y values are not required anymore! Left in for explanation
FROM
(
  SELECT
    v.category, v.model,
    COUNT(v.model) AS cnt
  FROM vehicle_sale vs
    INNER JOIN vehicle v
      ON vs.vs_vin = v.vin
    INNER JOIN sale s
     
2 0.00099775 SELECT a.category, a.model, a.cnt
FROM
(
  SELECT
    v.category, v.model,
    COUNT(v.model) AS cnt,
    ROW_NUMBER() OVER (PARTITION BY category ORDER BY COUNT(v.model) DESC) AS rn
  FROM vehicle_sale vs
    INNER JOIN vehicle v
      ON vs.vs_vin = v.vin
    INNER JOIN sale s
      ON vs.vs_sal