ClickHouse/tests/queries/0_stateless/00585_union_all_subquery_aggregation_column_removal.sql
Ivan 97f2a2213e
Move all folders inside /dbms one level up (#9974)
* Move some code outside dbms/src folder
* Fix paths
2020-04-02 02:51:21 +03:00

332 lines
5.8 KiB
SQL

DROP TABLE IF EXISTS clicks;
DROP TABLE IF EXISTS transactions;
CREATE TABLE clicks (domain String) ENGINE = Memory;
CREATE TABLE transactions (domain String) ENGINE = Memory;
INSERT INTO clicks VALUES ('facebook.com'), ('yandex.ru'), ('google.com');
INSERT INTO transactions VALUES ('facebook.com'), ('yandex.ru'), ('baidu.com');
SELECT
sum(total_count) AS total,
domain
FROM
(
SELECT
COUNT(*) AS total_count,
toUInt64(0) AS facebookHits,
domain
FROM transactions
GROUP BY domain
UNION ALL
SELECT
COUNT(*) AS total_count,
SUM(if(domain = 'facebook.com', 1, 0)) AS facebookHits,
domain
FROM clicks
GROUP BY domain
)
GROUP BY domain
ORDER BY domain
LIMIT 10
FORMAT JSONEachRow;
SELECT
sum(total_count) AS total,
domain
FROM
(
SELECT
COUNT(*) AS total_count,
SUM(if(domain = 'facebook.com', 1, 0)) AS facebookHits,
domain
FROM clicks
GROUP BY domain
UNION ALL
SELECT
COUNT(*) AS total_count,
toUInt64(0) AS facebookHits,
domain
FROM transactions
GROUP BY domain
)
GROUP BY domain
ORDER BY domain
LIMIT 10
FORMAT JSONEachRow;
SELECT DISTINCT * FROM
(
SELECT
sum(total_count) AS total,
domain
FROM
(
SELECT
COUNT(*) AS total_count,
toUInt64(0) AS facebookHits,
domain
FROM transactions
GROUP BY domain
UNION ALL
SELECT
COUNT(*) AS total_count,
SUM(if(domain = 'facebook.com', 1, 0)) AS facebookHits,
domain
FROM clicks
GROUP BY domain
)
GROUP BY domain
ORDER BY domain
LIMIT 10
UNION ALL
SELECT
sum(total_count) AS total,
domain
FROM
(
SELECT
COUNT(*) AS total_count,
SUM(if(domain = 'facebook.com', 1, 0)) AS facebookHits,
domain
FROM clicks
GROUP BY domain
UNION ALL
SELECT
COUNT(*) AS total_count,
toUInt64(0) AS facebookHits,
domain
FROM transactions
GROUP BY domain
)
GROUP BY domain
ORDER BY domain
LIMIT 10
);
SELECT DISTINCT total, domain FROM
(
SELECT
sum(total_count) AS total,
sum(facebookHits) AS facebook,
domain
FROM
(
SELECT
COUNT(*) AS total_count,
toUInt64(0) AS facebookHits,
domain
FROM transactions
GROUP BY domain
UNION ALL
SELECT
COUNT(*) AS total_count,
SUM(if(domain = 'facebook.com', 1, 0)) AS facebookHits,
domain
FROM clicks
GROUP BY domain
)
GROUP BY domain
ORDER BY domain
LIMIT 10
UNION ALL
SELECT
sum(total_count) AS total,
max(facebookHits) AS facebook,
domain
FROM
(
SELECT
COUNT(*) AS total_count,
SUM(if(domain = 'facebook.com', 1, 0)) AS facebookHits,
domain
FROM clicks
GROUP BY domain
UNION ALL
SELECT
COUNT(*) AS total_count,
toUInt64(0) AS facebookHits,
domain
FROM transactions
GROUP BY domain
)
GROUP BY domain
ORDER BY domain
LIMIT 10
)
ORDER BY domain, total;
SELECT * FROM
(
SELECT
sum(total_count) AS total,
domain
FROM
(
SELECT
COUNT(*) AS total_count,
toUInt64(0) AS facebookHits,
domain
FROM transactions
GROUP BY domain
UNION ALL
SELECT
COUNT(*) AS total_count,
SUM(if(domain = 'facebook.com', 1, 0)) AS facebookHits,
domain
FROM clicks
GROUP BY domain
)
GROUP BY domain
ORDER BY domain
LIMIT 10
) js1
ALL FULL OUTER JOIN
(
SELECT
sum(total_count) AS total,
domain
FROM
(
SELECT
COUNT(*) AS total_count,
SUM(if(domain = 'facebook.com', 1, 0)) AS facebookHits,
domain
FROM clicks
GROUP BY domain
UNION ALL
SELECT
COUNT(*) AS total_count,
toUInt64(0) AS facebookHits,
domain
FROM transactions
GROUP BY domain
)
GROUP BY domain
ORDER BY domain
LIMIT 10
) js2
USING (total, domain)
ORDER BY total, domain;
SELECT total FROM
(
SELECT
sum(total_count) AS total,
domain
FROM
(
SELECT
COUNT(*) AS total_count,
toUInt64(0) AS facebookHits,
domain
FROM transactions
GROUP BY domain
UNION ALL
SELECT
COUNT(*) AS total_count,
SUM(if(domain = 'facebook.com', 1, 0)) AS facebookHits,
domain
FROM clicks
GROUP BY domain
)
GROUP BY domain
ORDER BY domain
LIMIT 10
) js1
ALL FULL OUTER JOIN
(
SELECT
sum(total_count) AS total,
domain
FROM
(
SELECT
COUNT(*) AS total_count,
SUM(if(domain = 'facebook.com', 1, 0)) AS facebookHits,
domain
FROM clicks
GROUP BY domain
UNION ALL
SELECT
COUNT(*) AS total_count,
toUInt64(0) AS facebookHits,
domain
FROM transactions
GROUP BY domain
)
GROUP BY domain
ORDER BY domain
LIMIT 10
) js2
USING (total, domain)
ORDER BY total, domain;
SELECT domain FROM
(
SELECT
sum(total_count) AS total,
domain
FROM
(
SELECT
COUNT(*) AS total_count,
toUInt64(0) AS facebookHits,
domain
FROM transactions
GROUP BY domain
UNION ALL
SELECT
COUNT(*) AS total_count,
SUM(if(domain = 'facebook.com', 1, 0)) AS facebookHits,
domain
FROM clicks
GROUP BY domain
)
GROUP BY domain
ORDER BY domain
LIMIT 10
) js1
ALL FULL OUTER JOIN
(
SELECT
sum(total_count) AS total,
domain
FROM
(
SELECT
COUNT(*) AS total_count,
SUM(if(domain = 'facebook.com', 1, 0)) AS facebookHits,
domain
FROM clicks
GROUP BY domain
UNION ALL
SELECT
COUNT(*) AS total_count,
toUInt64(0) AS facebookHits,
domain
FROM transactions
GROUP BY domain
)
GROUP BY domain
ORDER BY domain
LIMIT 10
) js2
USING (total, domain)
ORDER BY total, domain;
DROP TABLE clicks;
DROP TABLE transactions;