SELECT ANY_VALUE(title) AS title_list,
SUM(count_model) AS count_model,
COUNT(*) AS total,
ANY_VALUE(created_at) AS `date`
FROM mymodels
GROUP BY name_list
ORDER BY name_list;
SELECT article_id
FROM tag2article
GROUP BY article_id
HAVING !SUM(tag_id = 1)
SUM(tag_id = 2) -- наличие тега 2 обязательно
SUM(tag_id IN (3,4)) -- наличие хотя бы одного из указанных тегов обязательно
!SUM(tag_id IN (5,6)) -- отсутствие любого из указанных тегов обязательно
SUM(tag_id IN (7,8)) = 1 -- обязательно наличие строго одного из двух указанных
SELECT CASE WHEN SUM(CASE WHEN col1 = 1 THEN 1 END) = 1 THEN 'col1'
WHEN SUM(CASE WHEN col2 = 1 THEN 1 END) = 1 THEN 'col2'
WHEN SUM(CASE WHEN col3 = 1 THEN 1 END) = 1 THEN 'col3'
ELSE 'none'
END where_only_one_1
FROM test;
SELECT *
FROM (
SELECT toStartOfInterval(time_local, interval 3600 SECOND) AS interval,
remote_addr,
count(DISTINCT http_user_agent),
count(http_user_agent)
FROM accesslog.default
WHERE time_local > (now() - toIntervalMinute(240))
GROUP BY interval, remote_addr
ORDER BY interval, remote_addr
) AS t1
INNER JOIN (
SELECT *
FROM accesslog.default
WHERE time_local > (now() - toIntervalMinute(240))
) AS t2 ON t1.remote_addr=t2.remote_addr
CREATE TABLE log AS (
WITH cte AS (
SELECT STRING_TO_ARRAY(txt, ' ') parsed
FROM t1
)
SELECT LEFT(parsed[2], 8) :: DATE dt,
parsed[3] link,
ARRAY_TO_STRING(parsed[6:100], ' ') agent,
t2.city
FROM cte
LEFT JOIN t2 ON cte.parsed[1] = t2.ip
);
как сформировать запрос чтоб было равенство 2021-10-30 23:59:59 = 10.21
SELECT *
FROM `table`
JOIN ( SELECT '10.21' AS parameter) criteria
ON `date` >= CONCAT('20', SUBSTRING_INDEX(parameter, '.', -1), '-', SUBSTRING_INDEX(parameter, '.', 1), '-', '01' AS DATE)
AND `date` < CONCAT('20', SUBSTRING_INDEX(parameter, '.', -1), '-', SUBSTRING_INDEX(parameter, '.', 1), '-', '01' AS DATE) + INTERVAL 1 MONTH
WITH RECURSIVE
cte AS ( SELECT CAST(DATE_FORMAT(@range_from, '%Y-%m-01') AS DATE) month_start,
LAST_DAY(@range_from) month_end
UNION ALL
SELECT month_start + INTERVAL 1 MONTH,
LAST_DAY(month_start + INTERVAL 1 MONTH)
FROM cte
WHERE month_start < DATE_FORMAT(@range_till, '%Y-%m-01')
)
SELECT cte.month_start, COUNT(employee.id) employees_amount
FROM cte
LEFT JOIN employee ON employee.date_employment <= cte.month_end
AND ( employee.date_dismissal >= cte.month_start
OR employee.date_dismissal IS NULL )
GROUP BY 1;
WITH cte AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY list_name ORDER BY date DESC) rn
FROM table
)
SELECT *
FROM cte
WHERE rn = 1
SELECT t1.*
FROM table t1
NATURAL JOIN (
SELECT list_name, MAX(date) date
FROM table
GROUP BY 1
)
SELECT *
FROM table
ORDER BY user_id = @user_id DESC, id DESC LIMIT 1
SELECT *
FROM table
ORDER BY user_id IS NULL, id DESC LIMIT 1
SELECT *
FROM products
CROSS JOIN categories
LEFT JOIN products_category USING (product_id, category_id)