簡體   English   中英

Mysql.. 如何將這 3 個請求合並到一個請求中?

[英]Mysql.. how to combine these 3 requests in a single request?

要獲得我的最終表,我必須創建 3 個表才能獲得結果。如何將這 3 個請求合並到一個請求中?

DROP TABLE IF EXISTS pturf1.scoring_chev_1;
CREATE TABLE scoring_chev_1 AS 
SELECT comp, jour, idche, cheval, cl, 
sum(case when `cl` = '1er' then 1 else 0 end)/count(*) as Top_1, 
sum(case when `cl` = '2e' then 1 else 0 end)/count(*) as Top_2,
sum(case when `cl` = '3e' then 1 else 0 end)/count(*) as Top_3,
FROM pturf1.cachedate
WHERE (typec ="plat"
AND    jour BETWEEN "2019-08-01" AND "2020-10-01")
GROUP BY comp, idche;

DROP TABLE IF EXISTS pturf1.scoring_chev_2;
CREATE TABLE scoring_chev_2 AS
SELECT idChe, cheval, (Top_1+Top_2+Top_3)AS total_che
FROM pturf1.scoring_chev_1;

DROP TABLE IF EXISTS pturf1.scoring_cheval;
CREATE TABLE scoring_cheval AS
SELECT idChe, cheval, SUM(total_che) AS total_chev
FROM pturf1.scoring_chev_2
GROUP BY idChe;

如何將這 3 個請求合並到一個請求中?

使用SELECT查詢作為子查詢而不是創建表。

CREATE TABLE scoring_cheval AS
SELECT idChe, cheval, SUM(total_che) AS total_chev
FROM (
    SELECT idChe, cheval, (Top_1+Top_2+Top_3)AS total_che
    FROM 
    (
        SELECT comp, jour, idche, cheval, cl, 
        sum(case when `cl` = '1er' then 1 else 0 end)/count(*) as Top_1, 
        sum(case when `cl` = '2e' then 1 else 0 end)/count(*) as Top_2,
        sum(case when `cl` = '3e' then 1 else 0 end)/count(*) as Top_3
        FROM pturf1.cachedate
        WHERE (typec ="plat"
        AND    jour BETWEEN "2019-08-01" AND "2020-10-01")
        GROUP BY comp, idche
    ) AS scoring_chev_1
) AS scoring_chev_2
GROUP BY idChe;

暫無
暫無

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

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