Как посчитать процент в sql
Как вычислить процент с помощью инструкции SQL
11 ответов
Я проверил следующее, И это работает. Ответ Гордия был близок, но имел умножение 100 в неправильном месте и имел некоторые отсутствующие скобки.
наиболее эффективный (использование over ()).
универсальный (любая версия SQL).
С CTE, наименее эффективным.
вместо использования отдельного CTE для получения общей суммы Вы можете использовать функцию окна без предложения «partition by».
Если вы используете:
чтобы получить счетчик для группы, вы можете использовать:
чтобы получить общее количество.
это, как правило, быстрее в моем опыте, но я думаю, что он может внутренне использовать временную таблицу в некоторых случаях (я видел «рабочий стол» при работе с » set statistics io on»).
EDIT: Я не уверен, что мой пример запроса-это то, что вы ищете, я просто иллюстрировал, как работают оконные функции.
вы должны рассчитать общее количество оценок Если это SQL 2005, вы можете использовать CTE
вам нужно сгруппироваться в поле оценка. Этот запрос должен дать вам то, что вы ищете в практически любой базе данных.
вы должны указать систему, которую вы используете.
Я просто использую это, когда мне нужно разработать процент..
обратите внимание, что 100.0 возвращает десятичные дроби, тогда как 100 самостоятельно округляет результат до ближайшего целого числа, даже с помощью функции ROUND ()!
это, я считаю, общее решение, хотя я тестировал его с помощью IBM Informix Dynamic Server 11.50.ГС3. Следующий запрос:
дает следующие выходные данные по тестовым данным, показанным ниже горизонтального правила. The ROUND функция может быть специфичной для СУБД, но остальные (возможно) нет. (Обратите внимание, что я изменил 100 на 100.0, чтобы гарантировать, что вычисление происходит с использованием нецелочисленного десятичного, числового арифметического; см. комментарии и спасибо Гром.)
должно работать следующее
EDIT: переместил * 100 добавил 1.0 чтобы убедиться, что он не выполняет целочисленное деление
в любой версии sql server вы можете использовать переменную для общего числа всех классов, как это:
вы можете использовать подзапроса выборки в запросе (хоть и не уверен, что быстрее):
вы также можете использовать хранимую процедуру (извинения за синтаксис Firebird):
Как посчитать процент в sql
SELECT Color, COUNT(*), SUM(StandardCost), 0 AS Sort1
FROM Production.Product
WHERE Color = N’Silver’ OR Color = N’Black’
GROUP BY Color
UNION ALL
SELECT N’�����’, COUNT(*), SUM(StandardCost), 1 AS Sort1
FROM Production.Product
WHERE Color = N’Silver’ OR Color = N’Black’
UNION ALL
SELECT N’�����’, COUNT(*), SUM(StandardCost), 2 AS Sort1
FROM Production.Product
UNION ALL
SELECT N’������� ����� �� �����’, COUNT(*), SUM(StandardCost), 3 AS Sort1
FROM Production.Product
| |
KRS544 Member ������: | ��� ������� ��������� ������� «�����», ��������� � ����������, ����� ����������� � �������. |
7 ��� 16, 16:42����[19267954] �������� | ���������� �������� ���������� |
| |
alks Member ������: | |
7 ��� 16, 17:10����[19268070] �������� | ���������� �������� ���������� |
| |
o-o Guest | |
7 ��� 16, 17:14����[19268085] �������� | ���������� �������� ���������� |
| |
alks Member ������: | KRS544, �������, ������ ���� ����������� � ����� ����� � ����������! |
7 ��� 16, 17:16����[19268092] �������� | ���������� �������� ���������� |
| |
alks Member — �� ��������� �����. ��� ����� ������, � ������. | |
7 ��� 16, 17:37����[19268199] �������� | ���������� �������� ���������� |
| |
alks Member ������: | Alexander Us, �������� �������! |
7 ��� 16, 17:42����[19268223] �������� | ���������� �������� ���������� |
| |
��������� ������� Member ����� ��� ����� ��������� ����� ����������. ���� �� ��� ������� ������ � ���� �� ��, ��� � ���. | |
7 ��� 16, 17:56����[19268271] �������� | ���������� �������� ���������� |
| |
invm Member ������: ������ | |
7 ��� 16, 18:07����[19268313] �������� | ���������� �������� ���������� |
| |
alks Member ���� �������� �������� ����� sql ����� ������� �� olap ���� ����� ssas ����� �� ssrs | |
7 ��� 16, 18:13����[19268330] �������� | ���������� �������� ���������� |
| ||||||
west74 Member declare @t table insert into @t(color,StandartCost) values select * from ( SQL Server parse and compile time: SQL Server Execution Times: SQL Server Execution Times: SQL Server Execution Times: SQL Server Execution Times: (5 row(s) affected) SQL Server Execution Times: (5 row(s) affected) SQL Server Execution Times: Как рассчитать процент с помощью оператора SQLКонечный результат, который я ищу, составляет A: 5%, B: 15%, C: 40% и т.д. ОТВЕТЫОтвет 1Я тестировал следующее, и это работает. Ответ от gordyii был близок, но имел умножение 100 в неправильном месте и имел некоторые отсутствующие круглые скобки. Ответ 2Самый эффективный (с использованием функции over()). Универсальная (любая версия SQL). С CTE наименее эффективным. Ответ 3Вместо того, чтобы использовать отдельный CTE для получения общего значения, вы можете использовать функцию окна без предложения «partition by». Если вы используете: чтобы получить счетчик для группы, вы можете использовать: чтобы получить общее количество. В моем опыте он работает быстрее, но я думаю, что в некоторых случаях он мог бы использовать временную таблицу (я видел «Рабочую таблицу» при работе с «set statistics io on» ). Ответ 4Вы должны рассчитать общее количество оценок Если это SQL 2005, вы можете использовать CTE Ответ 5Вам нужно сгруппировать в поле оценки. Этот запрос должен дать вам то, что вы ищете в почти любой базе данных. Вы должны указать используемую вами систему. Ответ 6Я просто использую это, когда мне нужно проработать процент. Обратите внимание, что 100.0 возвращает десятичные числа, тогда как 100 на нем будут округлять результат до ближайшего целого числа, даже с помощью функции ROUND()! Ответ 7Следующее должно работать Ответ 8Это, я считаю, общее решение, хотя я тестировал его с помощью IBM Informix Dynamic Server 11.50.FC3. Следующий запрос: Ответ 9В любой версии sql-сервера вы можете использовать переменную для всех классов, таких как: Ответ 10Вы можете использовать подзапрос в своем запросе (непроверенный и не уверен, что быстрее): Вы также можете использовать хранимую процедуру (извинения за синтаксис Firebird): Как рассчитать процент с помощью оператора SQLЯ ищу одно утверждение SQL, которое найдет проценты всех возможных ответов. (A, B, C и т. д. ) Кроме того, есть ли способ сделать это без определения всех возможных ответов (открытое текстовое поле-пользователи могут ввести ‘pass/fail’, ‘none’ и т. д. ) 13 ответовЯ протестировал следующее, и это действительно работает. Ответ Горди был близок, но имел умножение на 100 в неправильном месте и имел некоторые отсутствующие скобки. Наиболее эффективный (с использованием over()). Универсальный (любая версия SQL). С CTE, наименее эффективным. Вместо того, чтобы использовать отдельный CTE для получения итоговой суммы, вы можете использовать оконную функцию без предложения «partition by». Если вы используете: чтобы получить количество для группы, вы можете использовать: чтобы получить общее количество. По моему опыту, это происходит быстрее, но я думаю, что в некоторых случаях он может использовать временную таблицу (я видел «Worktable» при запуске с «set statistics io on»). EDIT: Я не уверен, что мой пример запроса-это то, что вы ищете, я просто иллюстрировал, как работают оконные функции. Вы должны рассчитать общее количество оценок Если это SQL 2005, вы можете использовать CTE Я просто использую это, когда мне нужно вычислить процент.. Обратите внимание, что 100.0 возвращает десятичные дроби, в то время как 100 самостоятельно округляет результат до ближайшего целого числа, даже с помощью функции ROUND()! Вам нужно сгруппироваться в поле оценка. Этот запрос должен дать вам то, что вы ищете практически в любой базе данных. Вы должны указать систему, которую вы используете. Должно сработать следующее У меня есть таблица посещаемости sql студентов, где я ввел такие значения, как это: Student_id total_classes class_attended 1 31 26 2 31 21 3 31 17 4 31 21 5 31 29 Я хочу рассчитать процент посещаемости student_id с 1. Я ищу, как сформулировать утверждение sql для вышеизложенного.. Я считаю, что это общее решение, хотя я тестировал его с помощью IBM Informix Dynamic Server 11.50.FC3. Следующий запрос: В любой версии sql server вы можете использовать переменную для общего количества всех оценок, как это: Вы можете использовать подвыборку в своем запросе from (непроверенный и не уверенный, какой из них быстрее): Вы также можете использовать хранимую процедуру (извините за синтаксис Firebird): У меня была похожая проблема. вы должны быть в состоянии получить правильный результат умножения на 1.0 вместо 100.See пример изображения прилагается Выберите класс, (количество(класс)* 1.0 / (выбрать количество(*) из MyTable)) как результат от MyTable группы по классам Этот хорошо работает в MS SQL. Он преобразует varchar в результат two-decimal-places-limited float. Похожие вопросы:У меня есть таблица посещаемости sql студентов, где я ввел такие значения, как это: Student_id total_classes class_attended 1 31 26 2 31 21 3 31 17 4 31 21 5 31 29 Я хочу рассчитать процент. Как рассчитать процент не null столбцов в sql server? Итак, у меня есть эта база данных, содержащая некоторые онлайн-Статьи, их названия, их авторов и историю журналов, которая содержит, сколько людей вошли на сайт, чтобы прочитать, какую статью и. 2 запроса на нахождение долей (проценты)Доброго времени суток!
8 запрос я реализовал следующим образом: В универе в аудитории поменял тип данных для «Stoimost» и «Cena_prodazhi» на float прямо в SQL Servere в пару кликов, и доля в процентах успешно посчиталась (надеюсь что и экономически всё верно). Но дома SQL Server не разрешает изменять тип данных, говорит удалите таблицу и заново создайте. Может я что-то не так делаю? Осталось разобраться с 7 и 9 запросами. Добрые люди, помогите пожалуйста, сил уже нет сидеть и голову ломать с этими запросами.. P.S. Если получится то и этот можно тоже разобрать
|