Количество отличных строк без Использования подзапроса

Скажите, что у меня есть Table1, который имеет дублирующиеся строки (забудьте то, что он не имеет никакого первичного ключа...), действительно ли возможно переписать следующее, не используя СОЕДИНЕНИЕ, подзапрос или CTE и также не имея необходимость обстоятельно объяснять столбцы в чем-то как GROUP BY?

SELECT COUNT(*)
FROM (
    SELECT DISTINCT * FROM Table1
) T1
11
задан squillman 19 February 2010 в 14:24
поделиться

3 ответа

Вы можете сделать что-то вроде этого.

SELECT Count(DISTINCT ProductName) FROM Products

но если вам нужен подсчет совершенно разных записей, то вам придется использовать один из других вариантов, которые вы упомянули.

Если бы вы хотели сделать что-то вроде того, что вы предложили в вопросе, то это означало бы, что в вашей таблице есть дубликаты записей.

Если бы у вас не было дубликатов записей SELECT DISTINCT * from table, это было бы то же самое, но без различия.

11
ответ дан 3 December 2019 в 04:52
поделиться

На самом деле это очень простое прозвище!

Целью разделения кода на методы является просто разрешение его повторного использования. При создании метода можно разрешить программе вызывать его в любое время из нескольких мест вместо повторения кода снова и снова.

Поэтому каждый раз, когда вы пишете строки и думаете... 'Хей, мне может понадобиться эта функциональность снова где-то в моей программе', то вы должны положить ее в метод.

Что касается классов, то вы попытаетесь сгруппировать аналогичные функции вместе. И старайтесь держать занятия короткими и простыми. Если вам нужно несколько классов, вы также будете группировать их в пакеты и так далее.

Когда я пишу код, я обычно имею довольно хорошее представление о том, что я буду использовать снова. Но часто я начну писать несколько строк кода и пойму, что написал нечто довольно похожее в прошлом. Так что я найду его и положу его в метод, то два или более мест теперь могут просто вызвать его. Это повторное использование в лучшем случае!

Вы часто можете использовать анализаторы, чтобы найти различные метрики, которые "поставят оценку" на повторное использование и дублирование кода.

С удовольствием учимся!

-121--3311331-

SICP имеет несколько очень хороших заданий.

-121--3690419-

Нет, это невозможно.

Если вы ограничены своей инфраструктурой/инструментом запроса/что угодно, не можете использовать вложенный запрос и не можете указать каждое имя столбца в GROUP BY, вы являетесь SOL.

Если вы не ограничены своей структурой/инструментом запроса/чем угодно, нет причин не использовать вложенный запрос.

8
ответ дан 3 December 2019 в 04:52
поделиться

если вы действительно хотите это сделать, вы можете просто «ВЫБРАТЬ СЧЕТЧИК (*) ИЗ table1 GROUP BY all, columns, here» и принять размер набора результатов в качестве вашего счетчика.

Но это был бы код, достойный dailywtf;)

3
ответ дан 3 December 2019 в 04:52
поделиться
Другие вопросы по тегам:

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