ClickHouse/dbms/tests/queries/0_stateless/00585_union_all_subquery_aggregation_column_removal.sql

332 lines
5.8 KiB
MySQL
Raw Normal View History

DROP TABLE IF EXISTS clicks;
DROP TABLE IF EXISTS transactions;
2018-03-01 06:35:54 +00:00
CREATE TABLE clicks (domain String) ENGINE = Memory;
CREATE TABLE transactions (domain String) ENGINE = Memory;
2018-03-01 06:35:54 +00:00
INSERT INTO clicks VALUES ('facebook.com'), ('yandex.ru'), ('google.com');
INSERT INTO transactions VALUES ('facebook.com'), ('yandex.ru'), ('baidu.com');
2018-03-01 06:35:54 +00:00
SELECT
sum(total_count) AS total,
domain
FROM
(
SELECT
COUNT(*) AS total_count,
toUInt64(0) AS facebookHits,
domain
FROM transactions
2018-03-01 06:35:54 +00:00
GROUP BY domain
UNION ALL
SELECT
COUNT(*) AS total_count,
SUM(if(domain = 'facebook.com', 1, 0)) AS facebookHits,
domain
FROM clicks
2018-03-01 06:35:54 +00:00
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
2018-03-01 06:35:54 +00:00
GROUP BY domain
UNION ALL
SELECT
COUNT(*) AS total_count,
toUInt64(0) AS facebookHits,
domain
FROM transactions
2018-03-01 06:35:54 +00:00
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
2018-03-01 06:35:54 +00:00
GROUP BY domain
UNION ALL
SELECT
COUNT(*) AS total_count,
SUM(if(domain = 'facebook.com', 1, 0)) AS facebookHits,
domain
FROM clicks
2018-03-01 06:35:54 +00:00
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
2018-03-01 06:35:54 +00:00
GROUP BY domain
UNION ALL
SELECT
COUNT(*) AS total_count,
toUInt64(0) AS facebookHits,
domain
FROM transactions
2018-03-01 06:35:54 +00:00
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
2018-03-01 06:35:54 +00:00
GROUP BY domain
UNION ALL
SELECT
COUNT(*) AS total_count,
SUM(if(domain = 'facebook.com', 1, 0)) AS facebookHits,
domain
FROM clicks
2018-03-01 06:35:54 +00:00
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
2018-03-01 06:35:54 +00:00
GROUP BY domain
UNION ALL
SELECT
COUNT(*) AS total_count,
toUInt64(0) AS facebookHits,
domain
FROM transactions
2018-03-01 06:35:54 +00:00
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
2018-03-01 06:35:54 +00:00
GROUP BY domain
UNION ALL
SELECT
COUNT(*) AS total_count,
SUM(if(domain = 'facebook.com', 1, 0)) AS facebookHits,
domain
FROM clicks
2018-03-01 06:35:54 +00:00
GROUP BY domain
)
GROUP BY domain
ORDER BY domain
LIMIT 10
) js1
2018-03-01 06:35:54 +00:00
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
2018-03-01 06:35:54 +00:00
GROUP BY domain
UNION ALL
SELECT
COUNT(*) AS total_count,
toUInt64(0) AS facebookHits,
domain
FROM transactions
2018-03-01 06:35:54 +00:00
GROUP BY domain
)
GROUP BY domain
ORDER BY domain
LIMIT 10
) js2
2018-03-01 06:35:54 +00:00
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
2018-03-01 06:35:54 +00:00
GROUP BY domain
UNION ALL
SELECT
COUNT(*) AS total_count,
SUM(if(domain = 'facebook.com', 1, 0)) AS facebookHits,
domain
FROM clicks
2018-03-01 06:35:54 +00:00
GROUP BY domain
)
GROUP BY domain
ORDER BY domain
LIMIT 10
) js1
2018-03-01 06:35:54 +00:00
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
2018-03-01 06:35:54 +00:00
GROUP BY domain
UNION ALL
SELECT
COUNT(*) AS total_count,
toUInt64(0) AS facebookHits,
domain
FROM transactions
2018-03-01 06:35:54 +00:00
GROUP BY domain
)
GROUP BY domain
ORDER BY domain
LIMIT 10
) js2
2018-03-01 06:35:54 +00:00
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
2018-03-01 06:35:54 +00:00
GROUP BY domain
UNION ALL
SELECT
COUNT(*) AS total_count,
SUM(if(domain = 'facebook.com', 1, 0)) AS facebookHits,
domain
FROM clicks
2018-03-01 06:35:54 +00:00
GROUP BY domain
)
GROUP BY domain
ORDER BY domain
LIMIT 10
) js1
2018-03-01 06:35:54 +00:00
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
2018-03-01 06:35:54 +00:00
GROUP BY domain
UNION ALL
SELECT
COUNT(*) AS total_count,
toUInt64(0) AS facebookHits,
domain
FROM transactions
2018-03-01 06:35:54 +00:00
GROUP BY domain
)
GROUP BY domain
ORDER BY domain
LIMIT 10
) js2
2018-03-01 06:35:54 +00:00
USING (total, domain)
ORDER BY total, domain;
DROP TABLE clicks;
DROP TABLE transactions;