需要帮助编写查询

时间:2021-02-08 15:09:55

标签: mysql sql database union database-administration

我正在使用以下查询通过 union-all 获取 10 个不同 ID 的报告。有什么办法可以减少查询?

SELECT 
sc.consentid,
CASE
    WHEN ue.userid IS NULL THEN 'No'
    ELSE 'Yes'
END ,
sc.firstname,
sc.lastname,
CASE
    WHEN SUM(time_on_page) > 0 THEN ROUND(SUM(time_on_page) / 60, 2)
    ELSE 'No videos watched'
END AS timeonpage,
'ID1' ,
CASE
    WHEN COUNT(DISTINCT COALESCE(article, video)) > 0 THEN COUNT(DISTINCT COALESCE(article, video))
    ELSE 'no video in list watched'
END AS countvideoswatched
FROM
studentconsent AS sc
    LEFT JOIN
useremails AS ue USING (email)
    LEFT JOIN
masterstats_innodb AS m ON ue.userid = m.user_id
WHERE
(sc.email LIKE '%.it'
    AND (sc.consentid IS NOT NULL
    AND m.id IS NULL)
    OR (m.id IS NOT NULL
    AND m.timestamp >= '2020-12-01'
    AND (video IN (SELECT 
        objectid
    FROM
        playlists
            JOIN
        playlisttoobjects USING (playlistid)
    WHERE
        unique_id = 'ID1'
            AND objecttype = 'article'))))
GROUP BY sc.consentid
union all (query2 with differentid)....so on

这里我需要使用 union-all 命令来组合所有 10 个不同 id 的选择查询。有什么办法可以减少它?

0 个答案:

没有答案