-- Выбираем все столбцы из вашей таблицы и добавляем два новых столбца:
-- NewGroup - показывает, начинается ли новая группа записей
-- GroupCount - показывает количество подряд идущих групп для каждой записи
SELECT
Date,
Check,
Time,
Product,
Qty,
Price,
-- Если предыдущая запись имеет ту же дату и чек, что и текущая, то это не новая группа
-- В противном случае, это новая группа
CASE
WHEN LAG(Date) OVER (ORDER BY Date, Time, Check) = Date AND LAG(Check) OVER (ORDER BY Date, Time, Check) = Check THEN 0
ELSE 1
END AS NewGroup,
-- Используем функцию SUM с условием для подсчета количества подряд идущих групп
SUM(CASE
WHEN LAG(Date) OVER (ORDER BY Date, Time, Check) = Date AND LAG(Check) OVER (ORDER BY Date, Time, Check) = Check THEN 0
ELSE 1
END) OVER (ORDER BY Date, Time, Check) AS GroupCount
FROM
YourTable
ORDER BY
Date, Time, Check
-- Используем подзапрос с предыдущим запросом для получения максимального числа подряд идущих групп для каждой даты
SELECT
Date,
MAX(GroupCount) AS MaxGroupCount
FROM (
SELECT
Date,
Check,
Time,
Product,
Qty,
Price,
-- Аналогично предыдущему запросу, создаем столбец NewGroup и используем функцию SUM с условием для подсчета количества подряд идущих групп
CASE
WHEN LAG(Date) OVER (ORDER BY Date, Time, Check) = Date AND LAG(Check) OVER (ORDER BY Date, Time, Check) = Check THEN 0
ELSE 1
END AS NewGroup,
SUM(CASE
WHEN LAG(Date) OVER (ORDER BY Date, Time, Check) = Date AND LAG(Check) OVER (ORDER BY Date, Time, Check) = Check THEN 0
ELSE 1
END) OVER (ORDER BY Date, Time, Check) AS GroupCount
FROM
YourTable
) t
-- Группируем по дате и выбираем максимальное значение GroupCount для каждой даты
GROUP BY
Date
function get_custom_post_term() {
global $wpdb;
$post_id = get_the_ID(); // Получаем ID текущего поста
$term = $wpdb->get_var( $wpdb->prepare(
"SELECT t.name
FROM {$wpdb->prefix}term_taxonomy AS tt
INNER JOIN {$wpdb->prefix}term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id
INNER JOIN {$wpdb->prefix}terms AS t ON t.term_id = tt.term_id
WHERE tt.taxonomy = 'curr_post_tax' AND tr.object_id = %d",
$post_id
) );
return $term;
}
$current_term = get_custom_post_term();
echo '<div>Home>Catalog>Term>'.$current_term.'</div>';
const chat = document.getElementById('chat');
// Создание нового наблюдателя за изменениями в chat
const observer = new MutationObserver(() => {
// Если chat.scrollHeight изменилось, прокрутите до нижнего края chat
if (chat.scrollHeight !== chat.dataset.scrollHeight) {
chat.scrollTo(0, chat.scrollHeight);
chat.dataset.scrollHeight = chat.scrollHeight;
}
});
// Настройка конфигурации наблюдателя
const config = { attributes: true, childList: true, subtree: true };
// Запуск наблюдателя за изменениями
observer.observe(chat, config);
const swiper = new Swiper('.swiper-container', {
// настройки Swiper
});
swiper.on('transitionEnd', function () {
const activeSlide = swiper.slides[swiper.activeIndex];
const section4 = activeSlide.querySelector('.section-4');
if (section4) {
section4.scrollIntoView({ behavior: 'smooth' });
}
});
const hero_slider = new Swiper('.hero-slider', {
modules: [Navigation, EffectFade],
effect: "fade",
fadeEffect: {
crossFade: true
},
autoplay: {
delay: 5000, // время задержки между слайдами
disableOnInteraction: false, // слайды будут продолжать автоматически переключаться при нажатии на кнопки навигации
},
navigation: {
nextEl: '.khutorok-slider-button_next',
prevEl: '.khutorok-slider-button_prev',
disabledClass: "khutorok-slider-button_disabled",
},
});
<template>
<div>{{ news }}</div>
</template>
<script>
import { useStore } from 'pinia'
export default {
setup() {
const userStore = useStore() // store Pinia
// создание вычисляемого свойства для передачи данных из setup() в data()
const newsData = computed(() => {
return userStore.news
})
// возвращаемые значения
return {
newsData
}
},
data() {
return {
news: []
}
},
// наблюдатель изменения вычисляемого свойства
watch: {
newsData(val) {
this.news = val
}
}
}
</script>
-webkit-appearance: none;
border-radius: 90px;
border: 4px solid var(--white);
sets = [['/img0.jpg '],
['/img1.jpg'],
['/img10.jpg'],
['/img11.jpg', '/img9.jpg'],
['/img12.jpg', '/img15.jpg'],
['/img11.jpg', '/img13.jpg', '/img8.jpg', '/img9.jpg'],
['/img14.jpg'],
['/img15.jpg'],
['/img16.jpg'],
['/img14.jpg', '/img17.jpg'],
['/img18.jpg'],
['/img19.jpg', '/img22.jpg'],
['/img2.jpg'],
['/img19.jpg', '/img20.jpg', '/img21.jpg', '/img22.jpg'],
['/img19.jpg', '/img21.jpg', '/img22.jpg'],
['/img22.jpg'],
['/img23.jpg'],
['/img3.jpg'],
['/img3.jpg', '/img4.jpg'],
['/img0.jpg', '/img5.jpg'],
['/img6.jpg'],
['/img2.jpg', '/img7.jpg'],
['/img11.jpg', '/img8.jpg', '/img9.jpg'],
['/img9.jpg']]
super_set = set(sets[0]) # берем первое подмножество
# последовательно вычисляем пересечения супермножества с каждым из подмножеств
for s in sets[1:]:
super_set = super_set.intersection(set(s))
# удаляем из супермножества все элементы, которые не принадлежат пересечению
for s in sets:
super_set.difference_update(set(s) - super_set)
# оставшиеся элементы супермножества и будут искомым результатом
result = sorted(list(super_set))
print(result)
function exportSheetToPDF() {
// Получаем активный Spreadsheet (гугл таблицу)
var ss = SpreadsheetApp.getActiveSpreadsheet();
// Получаем лист по его имени
var sheet = ss.getSheetByName('Имя листа');
// Экспортируем лист в PDF
var url = ss.getUrl();
url = url.replace(/edit$/,'');
var sheetId = sheet.getSheetId();
var pdfName = sheet.getName() + ".pdf";
var pdfUrl = url + 'export?exportFormat=pdf&format=pdf' +
'&size=letter' +
'&portrait=true' +
'&fitw=true' +
'&sheetnames=false&printtitle=false' +
'&pagenumbers=false&gridlines=false' +
'&fzr=false' +
'&gid=' + sheetId;
var options = {
headers: {
'Authorization': 'Bearer ' + ScriptApp.getOAuthToken(),
}
}
var response = UrlFetchApp.fetch(pdfUrl, options);
var blob = response.getBlob().setName(pdfName);
// Сохраняем PDF в Google Drive
var folder = DriveApp.getFolderById('ID папки');
folder.createFile(blob);
}
import sqlite3
from aiogram import Bot, Dispatcher, types
from aiogram.types import ParseMode
from aiogram.utils import markdown
# подключение к базе данных
conn = sqlite3.connect('promocodes.db')
cursor = conn.cursor()
# создание бота и диспетчера
bot = Bot(token='TOKEN')
dp = Dispatcher(bot)
# обработка команды /promo
@dp.message_handler(commands=['promo'])
async def send_promocodes(message: types.Message):
# получение данных из таблицы
cursor.execute('SELECT username, how_promo FROM promocodes')
data = cursor.fetchall()
# форматирование данных в виде строки
text = ''
for row in data:
text += f"{row[0]} - {row[1]}\n"
# отправка данных в чат
await message.answer(text, parse_mode=ParseMode.MARKDOWN)
# запуск бота
if __name__ == '__main__':
executor.start_polling(dp, skip_updates=True)
import re
# ...
texts = driver.find_elements(By.TAG_NAME, 'p')
for t in texts:
# Очистка текста от невидимых символов
cleaned_text = re.sub(r'[^\x20-\x7E]', '', t.text)
await bot.send_message(message.chat.id, text=cleaned_text)
window.addEventListener('scroll', function() {
var myBlock = document.getElementById('myBlock');
var scrollPosition = window.scrollY + window.innerHeight;
var blockPosition = myBlock.offsetTop + myBlock.offsetHeight;
if (scrollPosition >= blockPosition) {
window.scrollTo(0, blockPosition - window.innerHeight);
}
});
return User::where("name", "LIKE", "%{$query}%")->collate('utf8mb4_general_ci')->get();
asar extract app.asar test
npm install -g @electron/asar