Группа SQL днем, покажите заказы в течение каждого дня

Поскольку вы хотите объединить несколько пробелов в один пробел, а затем удалить символы, которые не являются словами или пробелами, вы должны сделать это в двух отдельных подстановках регулярных выражений:

print(re.sub(r'[^0-9a-zA-Z ]+', '', re.sub(r'\s+', ' ', s)))

.

apple new A
14
задан Jonathan Leffler 30 November 2008 в 22:20
поделиться

4 ответа

SQL не "пропускает" даты..., потому что запросы работают против данных, которые находятся на самом деле в таблице. Так, если бы у Вас нет ДАТЫ в таблице на 14-е января, затем почему SQL показал бы Вам результат :)

То, что необходимо сделать, делают временную таблицу и СОЕДИНЯЮТ с ним.

CREATE TABLE #MyDates ( TargetDate DATETIME )
INSERT INTO #MyDates VALUES CONVERT(DATETIME, CONVERT(VARCHAR, GETDATE() - 0, 101))
INSERT INTO #MyDates VALUES CONVERT(DATETIME, CONVERT(VARCHAR, GETDATE() - 1, 101))
INSERT INTO #MyDates VALUES CONVERT(DATETIME, CONVERT(VARCHAR, GETDATE() - 2, 101))
INSERT INTO #MyDates VALUES CONVERT(DATETIME, CONVERT(VARCHAR, GETDATE() - 3, 101))
INSERT INTO #MyDates VALUES CONVERT(DATETIME, CONVERT(VARCHAR, GETDATE() - 4, 101))
INSERT INTO #MyDates VALUES CONVERT(DATETIME, CONVERT(VARCHAR, GETDATE() - 5, 101))
INSERT INTO #MyDates VALUES CONVERT(DATETIME, CONVERT(VARCHAR, GETDATE() - 6, 101))
INSERT INTO #MyDates VALUES CONVERT(DATETIME, CONVERT(VARCHAR, GETDATE() - 7, 101))

SELECT CONVERT(VARCHAR, TargetDate, 101) AS Date, COUNT(*) AS OrderCount
FROM dbo.Orders INNER JOIN #MyDates ON Orders.Date = #MyDates.TargetDate
GROUP BY blah blah blah (you know the rest)

Вот так!

10
ответ дан 1 December 2019 в 14:33
поделиться

В зависимости от того, как SQL Server обрабатывает временные таблицы, можно ли более или менее легко расположить составить временную таблицу и заполнить ее с 7 (или было это 8?) даты Вы интересуетесь. Можно затем использовать это в качестве таблицы счета. Нет более чистого способа, о котором я знаю; можно только выбрать данные, которые существуют в таблице, или это может быть получено из данных, которые существуют в таблице или наборе таблиц. Если существуют даты, не представленные в таблице Orders, Вы не можете выбрать те даты из таблицы Orders.

0
ответ дан 1 December 2019 в 14:33
поделиться

Так как Вы захотите использовать эту таблицу даты часто в других запросах также, я предлагаю, чтобы Вы сделали ее постоянной таблицей и создали задание для добавления новогодних дат один раз в год.

0
ответ дан 1 December 2019 в 14:33
поделиться

Если вы хотите увидеть нулевое значение, то сделайте следующий запрос:

select count(*), sum(OrderAmount)
from Orders
where OrderDate>getdate()-7
  and sum(OrderAmount) > 0 or sum(OrderAmount) = 0
group by datepart(day,OrderDate)
1
ответ дан 1 December 2019 в 14:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: