mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-10-19 06:50:50 +00:00
332 lines
6.0 KiB
MySQL
332 lines
6.0 KiB
MySQL
|
DROP TABLE IF EXISTS test.clicks;
|
||
|
DROP TABLE IF EXISTS test.transactions;
|
||
|
|
||
|
CREATE TABLE test.clicks (domain String) ENGINE = Memory;
|
||
|
CREATE TABLE test.transactions (domain String) ENGINE = Memory;
|
||
|
|
||
|
INSERT INTO test.clicks VALUES ('facebook.com'), ('yandex.ru'), ('google.com');
|
||
|
INSERT INTO test.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 test.transactions
|
||
|
GROUP BY domain
|
||
|
UNION ALL
|
||
|
SELECT
|
||
|
COUNT(*) AS total_count,
|
||
|
SUM(if(domain = 'facebook.com', 1, 0)) AS facebookHits,
|
||
|
domain
|
||
|
FROM test.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 test.clicks
|
||
|
GROUP BY domain
|
||
|
UNION ALL
|
||
|
SELECT
|
||
|
COUNT(*) AS total_count,
|
||
|
toUInt64(0) AS facebookHits,
|
||
|
domain
|
||
|
FROM test.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 test.transactions
|
||
|
GROUP BY domain
|
||
|
UNION ALL
|
||
|
SELECT
|
||
|
COUNT(*) AS total_count,
|
||
|
SUM(if(domain = 'facebook.com', 1, 0)) AS facebookHits,
|
||
|
domain
|
||
|
FROM test.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 test.clicks
|
||
|
GROUP BY domain
|
||
|
UNION ALL
|
||
|
SELECT
|
||
|
COUNT(*) AS total_count,
|
||
|
toUInt64(0) AS facebookHits,
|
||
|
domain
|
||
|
FROM test.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 test.transactions
|
||
|
GROUP BY domain
|
||
|
UNION ALL
|
||
|
SELECT
|
||
|
COUNT(*) AS total_count,
|
||
|
SUM(if(domain = 'facebook.com', 1, 0)) AS facebookHits,
|
||
|
domain
|
||
|
FROM test.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 test.clicks
|
||
|
GROUP BY domain
|
||
|
UNION ALL
|
||
|
SELECT
|
||
|
COUNT(*) AS total_count,
|
||
|
toUInt64(0) AS facebookHits,
|
||
|
domain
|
||
|
FROM test.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 test.transactions
|
||
|
GROUP BY domain
|
||
|
UNION ALL
|
||
|
SELECT
|
||
|
COUNT(*) AS total_count,
|
||
|
SUM(if(domain = 'facebook.com', 1, 0)) AS facebookHits,
|
||
|
domain
|
||
|
FROM test.clicks
|
||
|
GROUP BY domain
|
||
|
)
|
||
|
GROUP BY domain
|
||
|
ORDER BY domain
|
||
|
LIMIT 10
|
||
|
)
|
||
|
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 test.clicks
|
||
|
GROUP BY domain
|
||
|
UNION ALL
|
||
|
SELECT
|
||
|
COUNT(*) AS total_count,
|
||
|
toUInt64(0) AS facebookHits,
|
||
|
domain
|
||
|
FROM test.transactions
|
||
|
GROUP BY domain
|
||
|
)
|
||
|
GROUP BY domain
|
||
|
ORDER BY domain
|
||
|
LIMIT 10
|
||
|
)
|
||
|
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 test.transactions
|
||
|
GROUP BY domain
|
||
|
UNION ALL
|
||
|
SELECT
|
||
|
COUNT(*) AS total_count,
|
||
|
SUM(if(domain = 'facebook.com', 1, 0)) AS facebookHits,
|
||
|
domain
|
||
|
FROM test.clicks
|
||
|
GROUP BY domain
|
||
|
)
|
||
|
GROUP BY domain
|
||
|
ORDER BY domain
|
||
|
LIMIT 10
|
||
|
)
|
||
|
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 test.clicks
|
||
|
GROUP BY domain
|
||
|
UNION ALL
|
||
|
SELECT
|
||
|
COUNT(*) AS total_count,
|
||
|
toUInt64(0) AS facebookHits,
|
||
|
domain
|
||
|
FROM test.transactions
|
||
|
GROUP BY domain
|
||
|
)
|
||
|
GROUP BY domain
|
||
|
ORDER BY domain
|
||
|
LIMIT 10
|
||
|
)
|
||
|
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 test.transactions
|
||
|
GROUP BY domain
|
||
|
UNION ALL
|
||
|
SELECT
|
||
|
COUNT(*) AS total_count,
|
||
|
SUM(if(domain = 'facebook.com', 1, 0)) AS facebookHits,
|
||
|
domain
|
||
|
FROM test.clicks
|
||
|
GROUP BY domain
|
||
|
)
|
||
|
GROUP BY domain
|
||
|
ORDER BY domain
|
||
|
LIMIT 10
|
||
|
)
|
||
|
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 test.clicks
|
||
|
GROUP BY domain
|
||
|
UNION ALL
|
||
|
SELECT
|
||
|
COUNT(*) AS total_count,
|
||
|
toUInt64(0) AS facebookHits,
|
||
|
domain
|
||
|
FROM test.transactions
|
||
|
GROUP BY domain
|
||
|
)
|
||
|
GROUP BY domain
|
||
|
ORDER BY domain
|
||
|
LIMIT 10
|
||
|
)
|
||
|
USING (total, domain)
|
||
|
ORDER BY total, domain;
|
||
|
|
||
|
|
||
|
DROP TABLE test.clicks;
|
||
|
DROP TABLE test.transactions;
|