簡體   English   中英

如何計算 MySQL 中按行分組的多列?

[英]How to count multiple columns grouping by rows in MySQL?

我有兩個表,“關鍵字”和“統計數據”,想知道每個關鍵字每個商家有多少結果。 所以每個關鍵字一行。

期望的結果,例如:

KWD    | RESULTS Amazon | RESULTS eBay
test     3                5
second   6                2

表:

create table keywords
(
    ID           mediumint unsigned auto_increment
        primary key,
    KEYWORD      varchar(255)                                                     null
);

create table stats
(
    MERCHANT_ID tinyint unsigned                   not null,
    TYPE_ID     mediumint unsigned                 not null comment 'the ID of the coresponding type. E.g. kw_id from keywords',
    RESULTS     smallint unsigned                  null,
    DATE        date                               not null,
    primary key (DATE, MERCHANT_ID, TYPE_ID)
)
    comment 'How many results does each merchant have per search?';

樣本數據:

-- keywords
insert into test.keywords (ID, KEYWORD) values (1, 'testing');
insert into test.keywords (ID, KEYWORD) values (2, 'blablub');

-- stats
insert into test.stats (MERCHANT_ID, TYPE_ID, RESULTS, DATE) values (1, 1, 33, '2021-07-06');
insert into test.stats (MERCHANT_ID, TYPE_ID, RESULTS, DATE) values (1, 2, 3, '2021-07-06');
insert into test.stats (MERCHANT_ID, TYPE_ID, RESULTS, DATE) values (2, 1, 22, '2021-07-06');
insert into test.stats (MERCHANT_ID, TYPE_ID, RESULTS, DATE) values (2, 2, 6, '2021-07-06');

查詢:

select
       kwd.KEYWORD,
       mss.MERCHANT_ID,
       mss.RESULTS
from keywords kwd
LEFT JOIN stats mss ON mss.TYPE_ID = kwd.ID
where
    date = 20210705
group by kwd.ID

大約有10個商人。 是否可以為每個關鍵字獲取一行並在單獨的列中獲得每個商家的結果數量?

嘗試這樣的事情:

select
  kwd.KEYWORD,
  SUM(IF(mss.MERCHANT_ID = 'amazon', mss.RESULTS, 0)) as `amazon_sum`,
  SUM(IF(mss.MERCHANT_ID = 'eBay', mss.RESULTS, 0)) as `eBay_sum`
    
from keywords kwd
    LEFT JOIN stats mss ON mss.TYPE_ID = kwd.ID
    where
        date = 20210705
    group by kwd.ID

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM