curl -s https://www.cbr.ru/scripts/XML_daily.asp | awk -F '</Valute>' '{for (i=1; i<=NF; i++) if($i ~ /USD|EUR/) print substr($i, index($i, "CharCode")+9,3)" "substr($i, index($i, "Value")+6,7)}' 2>/dev/null
wget -qO- https://www.cbr.ru/scripts/XML_daily.asp | awk -F '</Valute>' '{for (i=1; i<=NF; i++) if($i ~ /USD|EUR/) print substr($i, index($i, "CharCode")+9,3)" "substr($i, index($i, "Value")+6,7)}' 2>/dev/null
perl -MLWP::Simple -e '$_=get("https://www.cbr.ru/scripts/XML_daily.asp");while(m/(USD|EUR).+?Value>([^<]+)/g){print "$1 $2\n"}'
python3 -c 'import requests,re;print("\n".join([" ".join(i.groups()) for i in list(re.finditer(r"(USD|EUR).+?Value>([^<]+)", requests.get("https://www.cbr.ru/scripts/XML_daily.asp").text))]))'
# вариант 1 (RegEx)
(Invoke-WebRequest -UseBasicParsing -URI 'https://www.cbr.ru/scripts/XML_daily.asp').Content | Select-String '(USD|EUR).+?Value>([^<]+)' -AllMatches | foreach {$_.Matches.Groups[1,2,4,5].Value}
# вариант 2 (XML/XPath)
([xml](Invoke-WebRequest -UseBasicParsing -URI 'https://www.cbr.ru/scripts/XML_daily.asp').Content).SelectNodes('//Valute[CharCode="USD" or CharCode="EUR"]') | ft Name,Value
node -e "https.get('https://www.cbr.ru/scripts/XML_daily.asp',r=>{s='';r.on('data',d=>s+=d);r.on('end',()=>[...s.matchAll(/(USD|EUR).+?Value>([^<]+)/g)].forEach(e=>console.log(`${e[1]} ${e[2]}`)))})"
INSERT INTO product_attr (attr_7, attr_29)
WITH RECURSIVE
param AS
(
SELECT
461 AS attr_7_start, -- начальное значение для attr_7
10 AS attr_7_num, -- количество итераций в attr_7
1097 AS attr_29_start, -- начальное значение для attr_29
3 AS attr_29_num -- количество итераций в attr_29
),
attr29_iter (n) AS
(
SELECT 0
UNION ALL
SELECT n + 1 FROM attr29_iter, param WHERE n < attr_29_num -1
),
attr_7_iter (n) AS
(
SELECT 0
UNION ALL
SELECT n + 1 FROM attr_7_iter, param WHERE n < attr_7_num -1
),
gen_inc AS
(
SELECT i7.n as inc7, i29.n as inc29
FROM attr_7_iter i7, attr29_iter i29
)
SELECT attr_7_start + inc7, attr_29_start + inc29
FROM gen_inc, param
ORDER BY 1,2
;
INSERT INTO product_attr (product_id, product_price, product_old_price, attr_7, attr_29)
WITH RECURSIVE
param AS
(
SELECT
461 AS attr_7_start, -- начальное значение для attr_7
14 AS attr_7_num, -- количество итераций в attr_7
1097 AS attr_29_start, -- начальное значение для attr_29
3 AS attr_29_num -- количество итераций в attr_29
),
attr29_iter (n) AS
(
SELECT 0
UNION ALL
SELECT n + 1 FROM attr29_iter, param WHERE n < attr_29_num -1
),
attr_7_iter (n) AS
(
SELECT 0
UNION ALL
SELECT n + 1 FROM attr_7_iter, param WHERE n < attr_7_num -1
),
gen_inc AS
(
SELECT i7.n as inc7, i29.n as inc29
FROM attr_7_iter i7, attr29_iter i29
)
SELECT p.product_id, p.product_price, p.product_old_price, attr_7_start + inc7 AS attr_7, attr_29_start + inc29 AS attr_29
FROM gen_inc, param, product p, category c
WHERE p.product_id = c.product_id
AND c.category_id NOT IN (214, 221, 220, 217, 216, 215, 48, 42, 40, 45, 46, 44, 50, 41, 43, 31, 178, 89, 47, 179, 177, 120, 121, 59, 58, 32, 37, 56, 53, 54, 55, 29, 28, 30, 176, 237, 113, 116, 175, 114, 196, 195, 197, 218, 219, 33, 93, 92, 91, 81, 90)
ORDER BY 1, 4, 5
;
Сортировка:
выбрать в меню
En - Edit -> Line Operations -> Sort Lines Lexicographically Ascending
Ru - Правка -> Операции со Строками -> Сортировка по возрастанию (По первой цифре)
Удаление дубликатов:
выбрать в меню
En - Edit -> Line Operations -> Remove Consecutive Duplicate Lines
Ru - Правка -> Операции со Строками -> Удалить последовательные дубликаты строк
Найти:(\d+\.\d+\.\d+\.\d+:\d+[\r\n]*)(?:\1)+
Заменить на:\1
Найти:(\d+\.\d+\.\d+\.\d+:\d+[\r\n]*)(?:\1){2,}
Заменить на:\1
cat ip.lst | sort | uniq
SELECT
dt,
DATEADD(MILLISECOND, pctcont_90_dt % 1000, DATEADD(SECOND, pctcont_90_dt / 1000, '19700101')) AS pctcont_90_dt,
pctdisc_90_dt
FROM (
SELECT
dt,
CAST(
percentile_cont(.90)
WITHIN GROUP (ORDER BY (datediff_big(MS, '1970-01-01', dt)))
OVER()
AS BIGINT
)
AS pctcont_90_dt,
percentile_disc(.90)
WITHIN GROUP (ORDER BY dt) over()
AS pctdisc_90_dt
FROM test
) t
;
## запускаем tmux и отправляем его в фон, добавив в конце строки &
## где ... - это ваши параметры запуска tmux
tmux ... &
## ждем 610 сек и прибиваем tmux
sleep 610 && killall -9 tmux
#!/bin/bash
tmux new-session \; \
send-keys 'htop' C-m \; \
split-window -v -p 75 \; \
split-window -h -p 30 \; \
send-keys 'watch -n1 sensors' C-m \; \
select-pane -t 1 \; \
split-window -h \; \
send-keys './disk.sh' C-m \; \
split-window -v -p 20 \; \
send-keys './stress.sh' C-m \; &
sleep 610 && kill -9 $!
столбец1 столбец2 результат
фф 123 1
фф 456 0
йцу 123 0
-- количество дублирующихся записей
SELECT столбец1, столбец2, count(*)
FROM таблица
GROUP BY столбец1, столбец2;
-- количество ПАР!!
SELECT столбец1, столбец2, count(*) div 2
FROM таблица
GROUP BY столбец1, столбец2;
-- если необходимо именно как в вопросе (количество дублирующихся записей):
SELECT t1.столбец1, t1.столбец2, cnt AS результат
FROM таблица t1
JOIN (
SELECT столбец1, столбец2, count(*) cnt
FROM таблица
GROUP BY столбец1, столбец2) t2 ON t2.столбец1 = t1.столбец1
AND t2.столбец2 = t1.столбец2
;
-- если необходимо именно как в вопросе (КОЛИЧЕСТВО ПАР!!):
SELECT t1.столбец1, t1.столбец2, cnt div 2 AS результат
FROM таблица t1
JOIN (
SELECT столбец1, столбец2, count(*) cnt
FROM таблица
GROUP BY столбец1, столбец2) t2 ON t2.столбец1 = t1.столбец1
AND t2.столбец2 = t1.столбец2
;
if (message.text is not None and bad_words[f] in message.text.lower() or
message.photo is not None and bad_words[f] in message.caption.lower() or
message.video is not None and bad_words[f] in message.caption.lower()):
await bot.delete_message(message.chat.id, message.message_id)
break
\u0442\u0435\u043a\u0441\u0442\u0020\u0432\u0020\u044e\u043d\u0438\u043a\u043e\u0434
import re
regex = r"(\\u[0-9a-zA-Z]{4})(?!\\u[0-9a-zA-Z]{4}).*?(\\u[0-9a-zA-Z]{4})"
test_str = ("\\u0442\\u0435\\u043a\\u0441\\u0442\\u0020\\u0432\\u0020\\u044e\\u043d\\u0438\\u043a\\u043e\\u0434\n\n"
"\\u0442\\u0435dsds\\n\\u043a\\u0441\\u0442das\\u0020\\u0432dsdddddd\\u0020\\u044e\\u043d\\n\\n\\n\\u0438\\u043a\\u043e\\u0434")
subst = "\\1\\2"
# You can manually specify the number of replacements by changing the 4th argument
result = re.sub(regex, subst, test_str, 0)
if result:
print (result)
$('.quantity_inner .bt_minus').click(function() {
let $input = $(this).parent().find('.quantity');
let $val = $('.knopka1');
let count = parseInt($input.val()) - 1;
count = count < 1 ? 1 : count;
let price_val = parseFloat($val.data('price'));
let curr_val = count * price_val;
$input.val(count);
$val.text(curr_val);
});
https:\/\/site.ru\/[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}\/$
field_name = 'longitude'
и field_name = 'latitude'
select
lng.object_id,
ltd.value as latitude,
lng.value as longitude
from obj_table lng, obj_table ltd
where lng.field_name = 'longitude'
and ltd.field_name = 'latitude'
and lng.object_id = ltd.object_id
;
select
object_id,
max(case field_name when 'latitude' then value else null end) as latitude,
max(case field_name when 'longitude' then value else null end) as latitude,
max(case field_name when 'category' then value else null end) as category
from obj_table
group by object_id;
-- собираем в json:
select
object_id,
cast(replace(group_concat(json_object(field_name,value)),'},{',',') as json) json_obj
from obj_table
group by object_id
;
-- или так:
select
object_id,
cast(concat('{',group_concat( concat('"',field_name,'":"',value,'"') separator ',' ), '}') as json) as json_obj
from obj_table
group by object_id
;
-- извлекаем поля из json:
select
object_id,
json_extract(json_obj,'$.latitude') as latitude,
json_extract(json_obj,'$.longitude') as latitude,
json_extract(json_obj,'$.category') as category
from (
select
object_id,
cast(replace(group_concat(json_object(field_name,value)),'},{',',') as json) json_obj
from obj_table
group by object_id
) t
;
состоящее в перечислении через запятую табличных выражений в предложении FROM (таблицы, представления, подзапросы) при отсутствии предложения WHERE, связывающего столбцы из перечисленных источников строк(см.)
Error: near "DAY": syntax error
DATE(DATE_ADD(NOW(), INTERVAL -3 DAY))
date ( 'now', '-3 day')
DECLARE
l_sql VARCHAR2(32767):='
SELECT 1 field_11, ''river'' field_22 FROM DUAL
UNION ALL
SELECT 1 field_11, ''sharf'' field_22 FROM DUAL
';
l_cur PLS_INTEGER := DBMS_SQL.OPEN_CURSOR;
l_ind PLS_INTEGER;
l_col_count PLS_INTEGER;
l_col_names DBMS_SQL.DESC_TAB;
l_out VARCHAR2(32767);
col_val_chr VARCHAR2(32767);
LNBR VARCHAR2(2) := CHR(13)||CHR(10);
col_delim VARCHAR2(20) := '</td><td>';
row_delim VARCHAR2(20) := '</td></tr>'|| LNBR ||'<tr><td>';
BEGIN
-- Разбор запроса
DBMS_SQL.PARSE (
l_cur,
l_sql,
DBMS_SQL.NATIVE
);
-- Получение информации о столбцах
DBMS_SQL.DESCRIBE_COLUMNS (l_cur, l_col_count, l_col_names);
-- Вывод каждого из имен столбцов
FOR col_ind IN 1 .. l_col_count
LOOP
-- Определим тип столбца
DBMS_SQL.DEFINE_COLUMN(l_cur, col_ind, col_val_chr, 32767);
-- Выводим наимнование столбца
l_out := l_out || l_col_names(col_ind).col_name;
-- Если не последний эл. вставляем разделитель
IF col_ind != l_col_count
THEN
l_out := l_out || col_delim;
END IF;
END LOOP;
-- Выполняем и фетчим курсор
l_ind := DBMS_SQL.EXECUTE (l_cur);
LOOP
l_ind := DBMS_SQL.FETCH_ROWS( l_cur );
EXIT WHEN l_ind = 0;
l_out := l_out || row_delim;
FOR col_ind IN 1 .. l_col_count
LOOP
-- Читаем и выводим значение
DBMS_SQL.COLUMN_VALUE (l_cur, col_ind, col_val_chr);
l_out := l_out || col_val_chr;
-- Если не последний эл. вставляем разделитель
IF col_ind != l_col_count
THEN
l_out := l_out || col_delim;
END IF;
END LOOP;
END LOOP;
DBMS_SQL.CLOSE_CURSOR (l_cur);
DBMS_OUTPUT.PUT_LINE('<table>'||LNBR||'<tr><td>'|| l_out ||'</td></tr>'||LNBR||'</table>');
END;
/
/*
-- Если задать разделители полей ; и LNBR то на выходе получим CSV данные
col_delim VARCHAR2(20) := ';';
row_delim VARCHAR2(20) := LNBR;
*/
SELECT count(DISTINCT c.user_id) AS first_day_order
FROM clients c
INNER JOIN orders o ON c.user_id = o.user_id
WHERE DATE(c.registered_datetime) = DATE(o.when_start)
AND DATE(c.registered_datetime) BETWEEN '2021-09-01' AND '2021-09-30'
;
SELECT count(c.user_id) AS first_day_order
FROM clients c
WHERE DATE(c.registered_datetime) BETWEEN '2021-09-01' AND '2021-09-30'
AND EXISTS (
SELECT 1 FROM orders o
WHERE c.user_id = o.user_id
AND DATE(c.registered_datetime) = DATE(o.when_start)
)
;